gpt4 book ai didi

delphi - MemoryStream 并构造字节数组

转载 作者:行者123 更新时间:2023-12-03 14:58:53 26 4
gpt4 key购买 nike

我正在使用 MemoryStream 构造一个需要发送到服务器的字节数组。我有三个问题:

1) 有没有比这更好的方法来构造字节数组?

2)为什么这段代码会在我的内存流中写入虚假内容?

var
serial : word;
MS : TMemoryStream;
const
somebytes : array [0..1] of byte = ($72,$72);
...
begin
MS := TMemoryStream.Create();
try
MS.Write(somebytes[0],2);
serial := $3E6C;
MS.Write(serial,2);
finally
MS.Free;
end;

使用调试器,我看到流中添加了值 $6F32 而不是 $3E6C。

3)如果我打电话

MS.Position := 2;

然后我访问 PByte(MS.Memory)^ 为什么我得到流中的第一个字节而不是第三个字节?

最佳答案

Is there a better way to construct an array of bytes than this?

在我看来,这是一种完全合理的方式。

<小时/>

I see that in the stream is added the value $6F32 instead of $3E6C.

再次检查。实际上添加了正确的值。但要小心小端数据类型的陷阱。添加到流中的 4 个字节按顺序为:$72、$72、$6C、$3E。

<小时/>

Why do I get the first byte in the stream instead of the third?

因为Memory属性始终引用流的开头。它不考虑流的当前位置。

关于delphi - MemoryStream 并构造字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10514893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com