如何看待在Delphi IDE以十六进制形式值
要查看在Delphi的IDE十六进制形式的值,加“H”(不带引号)在评估器(Ctrl + F7)或手表(Ctrl + Alt + W)中输入变量名称后。默认情况下,Delphi以十进制形式显示值,您必须在值后面添加“,h”才能以十六进制格式查看它。
如何字符串值从十六进制格式转换为整数,在运行
不要让一个字符串数组,只是堆积在一个字符串的所有十六进制的数字,然后整个字符串转换为整数值。只需使用以下功能ValHex。
var
s: String;
i: Cardinal;
begin
s := '183';
if ValHex(s, i) then // pass pure hexadecimal characters only, without a '$' prefix.
begin
// now i has value of $0183
end;
end;
这里是ValHex的代码。它只接受纯粹的十六进制字符,没有'$'前缀。
function ValHex(const s: string; var AOut: Cardinal): Boolean;
var
a, i, L, start: Cardinal;
c: Char;
begin
Result := False;
AOut := 0;
L := Length(s);
start := 0;
if (L = 0) then Exit;
while (start < L-1) and (s[start+1] = '0') do Inc(start); // skipping leading zeros
if (L-start > 8) then Exit; // checking for overflow
a := 0;
for i := 1+start to L do
begin
C := s[i];
a := a shl 4;
case C of
'0'..'9' : Inc(a, Ord(C) - Ord('0'));
'A'..'F' : Inc(a, Ord(C) - Ord('A') + 10);
'a'..'f' : Inc(a, Ord(C) - Ord('a') + 10);
else Exit;
end;
end;
AOut := a;
Result := True;
end;
您也可以使用Delphi标准功能StrToInt(),请参阅如何使用它的文件 - 您应该添加“$”前缀的十六进制值,否则将把参数为十进制值。
如何整数值转换为十六进制字符串在运行时
function Hex8(A: Cardinal): string;
const
HexCharArr: array [0..15] of Char = 'ABCDEF';
var
I: Integer;
begin
SetLength(Result, 8);
for I := 0 to 7 do
begin
Result[8 - I] := HexCharArrW[(A and $F)];
A := A shr 4;
end;
end;
您还可以使用Delphi函数格式()将整数转换为十六进制字符串,请参阅文档。
声明'EA1'为'word','Cardinal'或'Integer'.'Byte'对于大于255的值来说太小了。 –
Hi Lu RD,是的我已经声明它是单词,现在我已经完成得到0183.但是因为现在0183不再是十六进制文件,所以我需要在$ 0183前面添加$变成$ 0183。然后我可以用$ 0001做“和”操作。你有什么想法如何在0183前添加$? –
这是完全困惑。 –