Python - 将两字节字符串作为单字节十六进制字符写入二进制文件

标签 python string binary hex byte

我正在编写一个Python脚本,它打开一个文件并读取两个字符串值,例如32 或 6f。然后应该将该值作为单个字节写入十六进制的二进制文件,例如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)。

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

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

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

我也尝试过

file_out.write('\x' + file_contents)

但是 python 解释器不喜欢这样。

最佳答案

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

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

关于Python - 将两字节字符串作为单字节十六进制字符写入二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21677646/

相关文章:

python - 将 SVG 转换为 PDF(svglib + reportlab 不够好)

python - Python 中的数学方程式操作

python - 循环中的多处理问题

php - 是否可以在 PHP 字符串中扩展函数调用?

php - 从 PHP 输出二进制文件作为 Javascript 二进制字符串

C语言二进制到十进制的转换

c - 左移后面加 1? C语言

c# - 有人知道基于网络的学习小组的源代码吗?

比较c中的两个相等数组但输出显示不相等

c# - 如何使用空格将另一个变量插入到字符串中? C#