我想输入一个像415A6B31这样的字符串,汇编函数应该返回AZk1 所以我必须采取每两个字节并转换为一个字节... 41 = A 5A = z等等
如何在装配中制作它?
答案 0 :(得分:0)
查看您正在处理的数字。字符串是十六进制是吗?查找十六进制值0-9是0x30到0x39,用0xF得到0-9是吗?因为0xF和0xF不会导致0xA,所以对于字符串中的每个字节
if(byte>0x39) byte = byte - 7;
byte=byte&0xF;
给你半字节(nybbles)0x4,0x1,0x5,0xA等。然后将半字节组合成字节
(0x4<<8)|0x1 = 0x41, (0x5<<4)|0xA = 0x5A, etc.
C语言符号:
<< means shift left
& means and
| means or
- means subtract
0x means the number is in hexadecimal