【问题标题】:Python - writing a two byte string as a single byte hex character to a binary filePython - 将两字节字符串作为单字节十六进制字符写入二进制文件
【发布时间】:2014-03-07 19:26:42
【问题描述】:

我正在编写一个 python 脚本,它打开一个文件并读取两个字符串值,例如32 或 6 楼。然后应该将该值作为单个字节以十六进制格式写入二进制文件,例如0x32 或 0x6f。

file_in = open('32.xml')
file_contents = file_in.read()
file_in.close()

file_out = open('testfile', 'wb')
file_out.write(file_contents)
file_out.close()

在本例中,32.xml 是一个包含字符串“32”的纯文本文件。但是 testfile 输出文件的内容是 '32' 而不是 0x32(或只是 2)。

我已经尝试了 write 命令的各种变体。我尝试了 chr() 函数,但这需要将字符串转换为 int。

file_out.write(chr(int(file_contents)))

这最终写入了字符串的十六进制值,而不是我想要的。只要你有一个包含 a-f 的值,它也会失败。

我也试过了

file_out.write('\x' + file_contents)

但 python 解释器不喜欢这样。

【问题讨论】:

    标签: python string binary hex byte


    【解决方案1】:

    您需要将原始字符串解释为 十六进制 整数。十六进制是基于 16 的符号,因此将 16 添加到 int() 调用中:

    file_out.write(chr(int(file_contents, 16)))
    

    【讨论】:

    • 这太棒了,正是我想要做的。感谢您的快速解决方案。
    猜你喜欢
    • 2021-10-27
    • 2020-05-06
    • 1970-01-01
    • 2015-03-25
    • 2019-07-27
    • 1970-01-01
    • 2012-06-05
    • 2017-08-23
    • 2023-03-07
    相关资源
    最近更新 更多