应用场景
非常有用的转换,可以把内存数据用字符串的形式显示出来,方便我们查看,修改,写入。
函数代码
function BufToHex(const Buf; const Size: Cardinal): string;
const
// maps nibbles to hex digits
cHexDigits: array[$0..$F] of Char = (
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
);
var
I: Cardinal; // loops thru output string
PB: ^Byte; // addresses each byte in buffer
begin
PB := @Buf;
SetLength(Result, 2 * Size);
I := 1;
while I <= 2 * Size do
begin
Result[I] := cHexDigits[PB^ shr 4];
Result[I + 1] := cHexDigits[PB^ and $0F];
Inc(PB);
Inc(I, 2);
end;
end;
function BytesToHex(const Bytes: array of Byte): string;
begin
Result := BufToHex(Bytes, Length(Bytes));
end;
测试
procedure TForm1.Button1Click(Sender: TObject);
const
tempArr: array [0 .. 5] of Byte = ($00, $01, $02, $03, $04, $05);
begin
Memo1.Lines.Add(BufToHex(tempArr, 3));
Memo1.Lines.Add(BytesToHex(tempArr));
end;
···