您误解了\xhh
Python字符串中的功能。\x
在Python字符串中使用表示法 只是 产生某些代码点的 语法 。
您可以使用'\x61'
产生一个字符串,也可以使用'a'
; 两种方式都只是 给我一个带有十六进制值61的字符的字符串,例如a
ASCII字符:
>>> '\x61'
'a'
>>> 'a'
'a'
>>> 'a' == '\x61'
True
在\xhh
随后的语法,是 不是值 ; 最终结果中没有\
,没有x
,没有6
和1
性格。
您应该 只写您的字符串 :
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'
。