gpt4 book ai didi

python - 在 python 中将 ASCII 字符串写为二进制

转载 作者:太空狗 更新时间:2023-10-29 20:43:39 24 4
gpt4 key购买 nike

我有一个 ASCII 字符串 = "abcdefghijk"。我想使用 python 将其写入二进制格式的二进制文件。

我试过以下:

str  = "abcdefghijk"
fp = file("test.bin", "wb")
hexStr = "".join( (("\\x%s") % (x.encode("hex"))) for x in str)
fp.write(hexStr)
fp.close()

但是,当我打开 test.bin 时,我看到的是 ascii 格式而不是二进制格式。

\x61\x62\x63\x64\x65\x66\x67

我理解它是因为这里有两个斜杠 ("\\x%s")。我该如何解决这个问题?提前致谢。

更新:

以下给了我预期的结果:

file = open("test.bin", "wb")
file.write("\x61\x62\x63\x64\x65\x66\x67")
file.close()

但是我如何使用“abcdef”ASCII 字符串实现这一点。 ?

最佳答案

您误解了 \xhh 在 Python 字符串中的作用。在 Python 字符串中使用 \x 符号只是语法来生成某些代码点。

可以使用'\x61'来生成字符串,也可以使用'a';两者都只是两种说法给我一个字符串,其中一个字符的十六进制值为 61,例如a ASCII 字符:

>>> '\x61'
'a'
>>> 'a'
'a'
>>> 'a' == '\x61'
True

\xhh 语法不是值;最终结果中没有 \x 也没有 61 字符。

你应该只写你的字符串:

somestring = 'abcd'

with open("test.bin", "wb") as file:
file.write(somestring)

二进制文件没有什么神奇之处;与以文本模式打开的文件的唯一区别是二进制文件不会自动将 \n 换行符转换为您平台的行分隔符标准;例如在 Windows 上,编写 \n 会生成 \r\n

您当然不必生成十六进制转义符来写入二进制数据。

在 Python 3 上,字符串是 Unicode 数据,不能不经编码直接写入文件,但在 Python 上,str 类型是已经编码的字节。所以在 Python 3 上你会使用:

somestring = 'abcd'

with open("test.bin", "wb") as file:
file.write(somestring.encode('ascii'))

或者您将使用字节字符串文字; b'abcd'.

关于python - 在 python 中将 ASCII 字符串写为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29151181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com