Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 字节到字符串的数组和向后转换_Arrays_Delphi_Indy - Fatal编程技术网

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

Arrays 字节到字符串的数组和向后转换,arrays,delphi,indy,Arrays,Delphi,Indy,不久前,我需要将字节类型的数组转换为TBytes,这是在delphigurus的帮助下完成的 具体来说,我需要转换数据,以便能够提取UDPServer在Indy 10的ServerUDPRead上提供给我的内容 此函数由@David Heffernan创建,并发布在此主题上: 所以,我正在使用 function CopyBytes(const Bytes: array of Byte): TBytes; var Count: Integer; begin Count := Length(

不久前,我需要将字节类型的数组转换为TBytes,这是在delphigurus的帮助下完成的

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

此函数由@David Heffernan创建,并发布在此主题上:

所以,我正在使用

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,然后在那里替换它


任何一种方法都是有用的。

Indy拥有
BytesToString()
ToBytes()
函数,用于在
字符串
小字节
之间进行转换。如果您使用的是Indy 10.6+,
IIdTextEncoding
接口具有
GetBytes()
GetString()
重载,这些重载接受
PByte
参数,因此,您可以使用
t字节
字节数组
数组,而无需在
t字节
中进行复制

您可以在任何步骤中修改其中的任何部分。我有点不清楚你到底想做什么修改。您只想将一些字节复制到字节数组中,对吗?实际上,需要更改第一个字符串;因此,我想更改/替换字节数组中的一些字节,是的。您可以使用
Move
进行更改,就像您问题中的
CopyBytes
函数中显示的那样