【发布时间】:2016-10-15 19:46:40
【问题描述】:
情况: 我正在从 ws2_32 挂钩 Send() 和 Recv(),现在我正在尝试使用以下函数转换 Buffer 中包含的数据。但是,当我这样做时,我看到一些数据包显示为 1 个半字节(例如“CA FE BA BE DE AD CO D”),而不是我们通常看到的 2 个十六进制数字(例如“CA FE BA BE DE AD C0 DE ")。
function ConvertDataToHex(Buffer: Pointer; Length: Word): string;
var
Iterator: Integer;
HexBuffer: string;
C: string;
Counter: Integer;
HexString: string;
begin
HexBuffer := '';
HexString := '';
for Iterator := 0 to Length - 1 do
begin
HexBuffer := HexBuffer +
IntToHex(Ord(char(Pointer(Integer(Buffer) + Iterator)^)), 2);
end;
for C in HexBuffer do
begin
Counter := Counter + 1;
if not Odd(Counter) then
begin
HexString := C + ' ';
end
else
begin
HexString := C;
end;
end;
Result := HexString;
end;
根据上面的解释,您是否看到代码中的一些异常情况可能导致某些结果字符串在字符串中具有奇数长度?
【问题讨论】:
标签: delphi