【发布时间】:2012-03-16 00:45:55
【问题描述】:
我必须使用 ASCII 编码将一些内存内容转换为字符串。例如:
0x6A636162
但我不确定如何将其分解为 ASCII。我认为这与字符/数字中有多少位有关,但我不确定如何去做(当然,我想知道更多背后的原因,而不仅仅是“如何去做”)。
【问题讨论】:
我必须使用 ASCII 编码将一些内存内容转换为字符串。例如:
0x6A636162
但我不确定如何将其分解为 ASCII。我认为这与字符/数字中有多少位有关,但我不确定如何去做(当然,我想知道更多背后的原因,而不仅仅是“如何去做”)。
【问题讨论】:
ASCII 使用 7 位来编码一个字符 (http://en.wikipedia.org/wiki/ASCII)。但是,通常使用 8 位对字符进行编码(请注意,从技术上讲,这不是 ASCII)。因此,您需要将数据拆分为 8 位块并将其与 ASCII 表匹配。
如果您使用特定的编程语言,它可能有办法将 ASCII 代码转换为字符。例如,Ruby 有 .chr 方法,Python 有 chr() 内置函数,而在 C 中可以 printf("%c", number)。
请注意,每个半字节(4 位)可以表示为一个十六进制数字,因此对于您显示的示例字符串,每个 8 位“块”将是:
0x6A
0x63
0x61
0X62
字符串读作“jcab”:)
【讨论】: