delphi几个进制相关的代码(HEXTOINT、HEXTOASC)


本文整理自网络,侵删。

  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 xe 的 tdictionary

Delphi 如何在twebbrowsers之间传递数据

Delphi getfilesize 获取文件大小 2

Delphi 如何获取重载函数的地址

Delphi10 一段汇编程序

干掉360保险箱vb/vc/Delphi 源码

Delphi 获取安卓手机wifi信息(xe8)

Delphi httpencode

Delphi 字符串截取

Delphi获得硬盘所有分区

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...