如何把一连串十六进制数据写到内流中TMemoryStream?在线等待。 ( 积分: 50 )

  • 主题发起人 主题发起人 860
  • 开始时间 开始时间
8

860

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把一连串十六进制数据写到内流中TMemoryStream?在线等待。
 
如何把一连串十六进制数据写到内流中TMemoryStream?在线等待。
 
var
buf:array[0..100] of byte
begin
...
memorystream := TMemoryStream.create;
try
memorystream.Write(buf,101);
finally
memorystream.free;
end;
...
end;
 
TMemoryStream.Write(buf,Count); 可以将数据保存到内存流中。

十六进制数据,可以进行转换
function HexToInt(Hex : string) : Cardinal; //16->10
const cHex = '0123456789ABCDEF';
var mult,i,loop : integer;
begin
result := 0;
mult := 1;
for loop := length(Hex) downto 1 do

begin
I:= pos(Hex[loop],cHex)-1;
if (i < 0) then i := 0;
inc(result,(i*mult));
mult := mult * 16;
end;
end;
 
写不了,比如要写入十六进制数:$0022、$027C14D4到内流存中如何写?
 
写到内存流中十六进制和十进制的没区别的啊 ...
or 你希望以 string 保存?
使用 :
var S: string;
MemoryStream.Write(Pchar(S)^, Length(S));
 
要把十六进制$02写入不到内流中,用UDP发送出去,发送出去的包还是十六进制$02。
 
楼主啊,我上面不是已经写了一个16进制转换成10进制的方法吗?
你先把$02转换成10进制,
然后用
TMemoryStream.Write(buf,Count);
可以将数据保存到内存流中。

对方接收到后,再把10转换成16进制是非常方便的啊!
 
最后还是自己解决。虽然三位给出的答案不是我所要的,谢谢三位的参与。
 
多人接受答案了。
 
后退
顶部