首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在中使用HextoBin

如何在中使用HextoBin
EN

Stack Overflow用户
提问于 2017-03-22 20:30:49
回答 1查看 542关注 0票数 0

我试图在Android上使用一些Windows代码,但是我没有成功。

当我试图编译以下代码时,会出现一个错误:

DCC错误没有重载版本的“HexToBin”可以用这些参数调用

代码语言:javascript
复制
var
  BinaryStream: TMemoryStream;
  HexStr: String;
  WSocket: TWSocket;
begin
  HexStr := memo1.Text;
  BinaryStream := TMemoryStream.Create;
  try
    BinaryStream.Size := Length(HexStr) div 2;
    if BinaryStream.Size > 0 then
    begin
      HexToBin(PChar(HexStr), BinaryStream.Memory, BinaryStream.Size);
      HexStr:='';
      HexStr:=MemoryStreamToString(BinaryStream);
      memo1.Text:=HexStr;
      IdUDPClient1.Send(HexStr);
EN

回答 1

Stack Overflow用户

发布于 2017-03-22 20:51:35

对于Android,您必须使用以下重载之一:

代码语言:javascript
复制
function HexToBin(const Text: PChar; TextOffset: Integer;
  var Buffer: TBytes; BufOffset: Integer; Count: Integer): Integer; overload;

function HexToBin(const Text: TBytes; TextOffset: Integer;
  var Buffer: TBytes; BufOffset: Integer; Count: Integer): Integer; overload;

最好通过使用TBytesStream而不是TMemoryStream来实现这一点。

然后,一个有效的调用可能如下所示:

代码语言:javascript
复制
var
  BinaryStream: TBytesStream;
  bytes: TBytes;
  HexStr: String;
begin
  HexStr := memo1.Text;
  SetLength(bytes, Length(HexStr) div 2);
  HexToBin(PWideChar(HexStr), 0, bytes, 0, Length(bytes));
  BinaryStream := TBytesStream.Create(bytes);
  ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42962063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档