如何使用 Delphi 将浮点数据复制到字节数组中?
How to copy float data into byte array with Delphi?
我正在和 Delphi 一起做一个项目。我想写一个函数。我需要将浮点数据放入字节数组 (TArray) 中。该函数的c#代码如下
public void SetCalibrationValue(byte channel, float value)
{
if (!serialPort.IsOpen)
return;
byte[] b = new byte[] {0x7E, 0x0B, 0x04, 0x01, 0x05, channel, 0x00, 0x00, 0x00, 0x00, 0x00};
Array.Copy(BitConverter.GetBytes(value), 0, b, 0x07, sizeof(float));
serialPort.Write(b, 0, b.Length);
if (OnDataTransmit != null)
OnDataTransmit(new DataTransmitEventArgs(b));
}
我想用 delphi 来完成这段代码。到目前为止我已经做到了,但我无法继续。
这是我的代码:
procedure PListenerx.SetCalibrationValue (channel:Byte;value:single);
var
b:TArray<Byte>;
c:TArray<Byte>;
begin
//Comport kapalıysa kontrolü yapılacak
b[0]:=E;
b[1]:=[=12=]B;
b[2]:=;
b[3]:=;
b[4]:=;
b[5]:=channel;
b[6]:=[=12=];
b[7]:=[=12=];
b[8]:=[=12=];
b[9]:=[=12=];
b[10]:=[=12=];
end;
Move(value, b[7], SizeOf(Single));
将用 `value
填充 b
数组的末尾
请注意 Delphi 7 中没有泛型数组,因此代码如下所示
procedure PListenerx.SetCalibrationValue (channel:Byte;value:single);
var
b: array of Byte;
begin
SetLength(b, 11);
//Comport kapalıysa kontrolü yapılacak
b[0]:=E;
b[1]:=[=11=]B;
b[2]:=;
b[3]:=;
b[4]:=;
b[5]:=channel;
b[6]:=[=11=];
//no need to fill array end with junk
Move(value, b[7], SizeOf(Single));
//now send b[] to the port
end;
我正在和 Delphi 一起做一个项目。我想写一个函数。我需要将浮点数据放入字节数组 (TArray) 中。该函数的c#代码如下
public void SetCalibrationValue(byte channel, float value)
{
if (!serialPort.IsOpen)
return;
byte[] b = new byte[] {0x7E, 0x0B, 0x04, 0x01, 0x05, channel, 0x00, 0x00, 0x00, 0x00, 0x00};
Array.Copy(BitConverter.GetBytes(value), 0, b, 0x07, sizeof(float));
serialPort.Write(b, 0, b.Length);
if (OnDataTransmit != null)
OnDataTransmit(new DataTransmitEventArgs(b));
}
我想用 delphi 来完成这段代码。到目前为止我已经做到了,但我无法继续。 这是我的代码:
procedure PListenerx.SetCalibrationValue (channel:Byte;value:single);
var
b:TArray<Byte>;
c:TArray<Byte>;
begin
//Comport kapalıysa kontrolü yapılacak
b[0]:=E;
b[1]:=[=12=]B;
b[2]:=;
b[3]:=;
b[4]:=;
b[5]:=channel;
b[6]:=[=12=];
b[7]:=[=12=];
b[8]:=[=12=];
b[9]:=[=12=];
b[10]:=[=12=];
end;
Move(value, b[7], SizeOf(Single));
将用 `value
填充b
数组的末尾
请注意 Delphi 7 中没有泛型数组,因此代码如下所示
procedure PListenerx.SetCalibrationValue (channel:Byte;value:single);
var
b: array of Byte;
begin
SetLength(b, 11);
//Comport kapalıysa kontrolü yapılacak
b[0]:=E;
b[1]:=[=11=]B;
b[2]:=;
b[3]:=;
b[4]:=;
b[5]:=channel;
b[6]:=[=11=];
//no need to fill array end with junk
Move(value, b[7], SizeOf(Single));
//now send b[] to the port
end;