【问题标题】:Save different byte formats to file as readable text in Python将不同的字节格式保存为 Python 中的可读文本
【发布时间】:2018-05-14 21:39:39
【问题描述】:

我正在尝试将字符串列表和十六进制值(后者具有不同的表示形式)作为人类可读的字符串保存到 Python 中的文件中。

['TX', '\x12', '0x2', '0x15', '0xe6', '0x86', '0xce', '\x13']

像这样保存到文件中

TX0x20x150xe60x860xce

如您所见,所有使用转义序列的十六进制表示都被存储,不是作为其值的可读版本,而是作为特殊字符。我的目标是能够在这些值通过时识别它们(我尝试在 newString 中使用 if "//" 无济于事),然后将它们转换为十六进制表示 "0x##" 以便它们可以存储并稍后由某人阅读。

【问题讨论】:

  • 怎么区分0x2和0x30 0x78 0x32?
  • 这些似乎都采用相同的十六进制表示格式。我遇到的主要问题是使用转义字符“\x”表示的字符最终会转换为它们的代表性 ASCII 字符,这不是我想要的。
  • 它们没有被转换为ASCII,它们已经 ASCII。

标签: python casting escaping hex


【解决方案1】:

所以我的问题的答案最终是为了将值保存为我正在寻找的十六进制值的表示,我最终需要使用以下代码:

    def log(self, mode, data):
    for i,d in enumerate(data):
        if not isinstance(d,str):
            data[i] = hex(d)
        elif self.is_hex(d):
            data[i] = binascii.hexlify(d)

这允许我希望以可读取的格式存储数据。感谢Ignacio Vazquez-Abrams 的帮助,以及以下Dev Dungeon : Working with Binary Data 的所有出色信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2011-10-24
    • 2021-10-09
    • 2021-06-13
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多