我想输入一个像 415A6B31 这样的字符串,汇编函数应该返回 AZk1 所以我必须每两个字节转换为一个字节...... 41 = A 5A = z 等等
如何在组装中制作它?
看看你正在处理的数字。字符串是十六进制的是吗?查找十六进制值 0-9 是 0x30 到 0x39,用 0xF 得到 0-9 是吗?将 0x41 与 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