当前位置:  开发笔记 > 程序员 > 正文

字节数组到字符串和向后转换

如何解决《字节数组到字符串和向后转换》经验,为你挑选了1个好方法。

前一段时间,我需要将字节类型的数组转换为TBytes,这是在SO上的delphi大师的帮助下完成的。

具体来说,我需要转换数据,以便提取Indy 10中ServerUDPRead上的UDPServer给我的内容。

此函数由@David Heffernan制作,并发布在以下主题上:tbyte和tidbyte之间的Delphi XE3 indy兼容性问题

所以,我正在使用

function CopyBytes(const Bytes: array of Byte): TBytes;
var
  Count: Integer;
begin
  Count := Length(Bytes);
  SetLength(Result, Count);
  if Count > 0 then
    Move(Bytes[0], Result[0], Length(Bytes));
end;

将其转换为TBytes,然后我可以通过客户端UDP SendBuffer发送此类型。

但是,我需要对它们之间转发的数据进行一些修改;我用以下命令将ServerUDPRead传递的字节数组的第一行读取到一个字符串中:

var FirstString: string;

FirstString := PAnsiChar(@AData[0]);

其中AData是字节数组;

现在,如何进行反向转换,以便可以将自己的字符串放入此AData字节数组中,而不是当前所在的字节数组中,但又不修改数组内部的任何其他数据,然后将其转换为TBytes?

有没有办法放置类似的东西AData[0]:=PAnsiChar(mystring); (这当然是错误的...),然后将其与CopyBytes转换为TBytes,或者也许先转换为TBytes,然后在其中替换...?

两种方式都将是有用的。



1> Remy Lebeau..:

Indy具有BytesToString()ToBytes()函数,用于在String和之间进行转换TIdBytes。而且,如果您使用的是Indy 10.6+,则该IIdTextEncoding接口具有GetBytes()GetString()重载带有PByte参数,因此您可以使用TBytesand array of Byte数组,而不必复制到/从TIdBytes

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有