我要创造出有小尾数编码字符一些和十六进制值的文件。要做到编码,我使用:写入文件的字节和字符串
pack("I", 0x01ddf23a)
,这给我:
b':\xf2\xdd\x01'
第一个问题是,这给我字节,我不能写入文件的字符串。第二个是\ x3a转向':'。我期望的是写入文件\ x3a \ xf2 \ xdd \ x01作为字节而不是字符。
我的尝试:
>>> a=0x01ddf23a
>>> str(pack("I", a))
"b':\\xf2\\xdd\\x01'" <= wrong
>>> pack("I", a).hex()
'3af2dd01 <= I need '\x' before each byte
>>> pack("I", a).decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf2 in position 1: invalid continuation byte
更改的open()从“W”到“WB”逼我只写字节,但我想写到许多字符串和几个字节,如:
Hello world
^I^M^T^B
End file
我知道我可以简单的做到这一点:
fs.open("file" "w")
fs.write("Hello world")
fs.write("\x3a\xf2\xdd\x01")
fs.write("End file")
fs.close()
但这让我的字节值0x01ddf23a难以阅读和有以这种形式更改此值时很容易犯一些错误。
完美!正是我需要的:)首先,易于使用字节串文字与二进制模式的文件,第二个很好的解释,如果python显示我一些ascii字节字符串,这并不意味着它会打印我ascii字符。 – Borgo