+ -
当前位置:首页 → 问答吧 → 数据转换问题

数据转换问题

时间:2011-10-26

来源:互联网

如何将16进制的数据转换成数据asiic
如:6 9 4,转换后39 36 34

再如怎么把他反转过来,如:44 41 43 转换后:3500

作者: zxj000001   发布时间: 2011-10-26

inttohex 10转16

16转10
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;

作者: funxu   发布时间: 2011-10-26

百度一下,满大街呢

作者: funxu   发布时间: 2011-10-26

另外16进制的字符转换成数据asiic

ord()

作者: funxu   发布时间: 2011-10-26

ASCII码6,9,4 转换成16进制那也是 36,39,34 啊!为什么你上面位置不对呢/
还有下面 16进制 44,41,43 转换成ASCII码怎么是3500呢?怎么转换的!不明白!请赐教!

作者: jayqiang   发布时间: 2011-10-26

44 41 43
D A C
16进DAC=十进3500
hextoint

作者: funxu   发布时间: 2011-10-26