在汇编中将数字转换为ASCII

时间:2012-10-15 20:09:10

标签: assembly binary hex ascii bit-manipulation

有人可以解释为什么对带有0x0030的二进制数进行OR运算,因为操作数会产生该数字的ASCII字符吗?

3 个答案:

答案 0 :(得分:4)

因为查看ASCII图表,数字0到9从0x30开始。所以你想要字符1的ASCII值? 0x30或0x01 = 0x31 =数字1的ASCII值。

In binary it's easy to see:

(0x30)   110000
or
(0x01)   000001
=        110001

Which is 0x31 - ASCII value of 1.

enter image description here

答案 1 :(得分:1)

如果您指的是数字0到9,原因是0x30(或48)是数字0的ASCII代码。因为48只需要位于较高(左手)一侧的位。一个字节,将其与低于16(低位)的任何数字进行或运算与数学上添加数字相同。

因此0x30或0x01将给出0x31,即字符“1”的ASCII码,依此类推。

答案 2 :(得分:1)

查看单个数字的二进制表示:例如2d = 00000010b。对其应用带有0x30(00110000b)的OR运算。这导致00110010b为0x32或50d,这是'2'的ASCII码。实际上,在这种情况下(因为没有要考虑的进位),OR运算等于添加0x30。