怎么将指针所指位置转换为16进制文本
如何将指针所指位置转换为16进制文本
已经知道
Buffer: Pointer;
BufferLength: Word
如何将转换为16进制文本呢.
var
tmpArray : array[0..4096] of Byte;
ArraySize,i : DWORD;
Count : DWORD;
tmpStr : string;
pStr : PChar;
begin
pStr := Buffer;
tmpStr := string(pStr);
Dec(PStr);
for i:=0 to BufferLength-1 do
begin
inc(pStr);
tmpArray[i] := Byte(pStr^);
writeln(IntToHEX(Ord(tmpArray[i]),2));
end;
end;
实际上结果应该是
00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
但是
有丢包...
------解决方案--------------------
在delphi2010以上版本,PChar实际上是PWideChar,是不是这个原因造成的。
------解决方案--------------------
定义 pStr : PAnsiChar;
------解决方案--------------------
楼主,你的代码转了很多次数据哦
------解决方案--------------------
是串口编程吗?用控件的话就把 IGNORENULLCHAR属性设置为FALSE, OUTX_XONXOFFFLOW 的值改为FALSE 。
已经知道
Buffer: Pointer;
BufferLength: Word
如何将转换为16进制文本呢.
var
tmpArray : array[0..4096] of Byte;
ArraySize,i : DWORD;
Count : DWORD;
tmpStr : string;
pStr : PChar;
begin
pStr := Buffer;
tmpStr := string(pStr);
Dec(PStr);
for i:=0 to BufferLength-1 do
begin
inc(pStr);
tmpArray[i] := Byte(pStr^);
writeln(IntToHEX(Ord(tmpArray[i]),2));
end;
end;
实际上结果应该是
00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
但是
有丢包...
------解决方案--------------------
在delphi2010以上版本,PChar实际上是PWideChar,是不是这个原因造成的。
------解决方案--------------------
定义 pStr : PAnsiChar;
------解决方案--------------------
var
P : PByte;
i : integer;
begin
P := Buffer;
for i:=0 to Integer(BufferLength)-1 do begin
WriteLn(IntToHEX(P^,2));
Inc(P);
end;
end;
楼主,你的代码转了很多次数据哦
------解决方案--------------------
是串口编程吗?用控件的话就把 IGNORENULLCHAR属性设置为FALSE, OUTX_XONXOFFFLOW 的值改为FALSE 。