Delphi 十六进制,十进制,字符串之间的类型转换
//内存数据(字符串或者内存指针)转化为十六进制字符串
//'111'==>>'31313131'
//E5 8D 40 00 45 72 72 6F==>>'E58D40004572726F'
function StrToHex(Value: PAnsiChar; Len: Integer): AnsiString;
var
I: Integer;
begin
Result := '';
for I := 0 to Len - 1 do
Result := Result + IntToHex(Ord(Value[I]), 2);
end;
//十六进制数的字符串转化为整形 '004543C4'==>>4539332
function HexToInt(Hex: AnsiString): Integer;
var
I, Res: Integer;
ch: AnsiChar;
begin
Res := 0;
for I := 0 to Length(Hex) - 1 do
begin
ch := Hex[I + 1];
if (ch >= '0') and (ch <= '9') then
Res := Res * 16 + Ord(ch) - Ord('0')
else if (ch >= 'A') and (ch <= 'F') then
Res := Res * 16 + Ord(ch) - Ord('A') + 10
else if (ch >= 'a') and (ch <= 'f') then
Res := Res * 16 + Ord(ch) - Ord('a') + 10
else raise Exception.Create('Error: not a Hex String');
end;
Result := Res;
end;
//十六进制字符串转化为对应的字符 '31313131'==>>'111'
function HexToStr(Value: AnsiString): AnsiString;
var
I: Integer;
begin
Result := '';
for I := 1 to Length(Value) do
begin
if ((I mod 2) = 1) then
Result := Result + AnsiChar(HexToInt(Copy(Value, I, 2)));
end;
end;
如果觉得文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
作者:YXGust
出处:https://www.cnblogs.com/YXGust/p/16615814.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
本博文版权归本博主所有,转载请注明原文链接