本文整理自网络,侵删。
function HexToInt(const S: String): DWORD;
asm
PUSH EBX
PUSH ESI
MOV ESI, EAX //字符串地址
MOV EDX, [EAX-4] //读取字符串长度
XOR EAX, EAX //初始化返回值
XOR ECX, ECX //临时变量
TEST ESI, ESI //判断是否为空指针
JZ @@2
TEST EDX, EDX //判断字符串是否为空
JLE @@2
MOV BL, $20
@@0:
MOV CL, [ESI]
INC ESI
OR CL, BL //如果有字母则被转换为小写字母
SUB CL, '0'
JB @@2 // < '0' 的字符
CMP CL, $09
JBE @@1 // '0'..'9' 的字符
SUB CL, 'a'-'0'-10
CMP CL, $0A
JB @@2 // < 'a' 的字符
CMP CL, $0F
JA @@2 // > 'f' 的字符
@@1: // '0'..'9', 'A'..'F', 'a'..'f'
SHL EAX, 4
OR EAX, ECX
DEC EDX
JNZ @@0
JMP @@3
@@2:
XOR EAX, EAX // 非法16进制字符串
@@3:
POP ESI
POP EBX
RET
end;
function HexToAsc(strData:string): string;
var
sresult:string; sfinal:string; hexc:cardinal; i:integer;
begin
i:=1;
while i<=length(strData) do
begin
hexc := strtoint('$' + copy(strData,i,2));
sresult := inttostr(hexc);
sresult := chr(strtoint(sresult));
sfinal := sfinal + sresult;
i:=i+2;
end;
result := sfinal
end;
相关阅读 >>
Delphi richedit memo1支持中文搜索、向上查找、区分大小写
Delphi 用 directshow 获取本机的视频摄像设备列表
Delphi 如何判断clipboard剪切板中的内容的类型
更多相关阅读请进入《Delphi》频道 >>