【问题标题】:Translating memory contents into a string via ASCII encoding通过 ASCII 编码将内存内容转换为字符串
【发布时间】:2012-03-16 00:45:55
【问题描述】:

我必须使用 ASCII 编码将一些内存内容转换为字符串。例如:

0x6A636162

但我不确定如何将其分解为 ASCII。我认为这与字符/数字中有多少位有关,但我不确定如何去做(当然,我想知道更多背后的原因,而不仅仅是“如何去做”)。

【问题讨论】:

    标签: memory hex ascii


    【解决方案1】:

    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”:)

    【讨论】:

    • 哦,好的,所以 8 位“块”是 2 个十六进制字符。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多