1

我想输入一个像 415A6B31 这样的字符串,汇编函数应该返回 AZk1 所以我必须每两个字节转换为一个字节...... 41 = A 5A = z 等等

如何在组装中制作它?

4

1 回答 1

0

看看你正在处理的数字。字符串是十六进制的是吗?查找十六进制值 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
于 2012-04-04T00:29:22.243 回答