3

我是 python 新手,尝试编写一个脚本,将字节 0x00-0xff 输出到文件。

这是我目前正在查看的代码

import sys

filename="binarywriter.txt"
openmode="wb"
charset="utf8"

file=open(filename, openmode)
for x in range(16,256):
    s="0x%.2x=\\x" %x
    s+=hex(x)[2:]
    d=bytes(s, charset).decode("unicode_escape")
    file.write(d.encode(charset))
    file.write("\r\n".encode(charset))
file.close()
sys.stdin.readline()

问题是python脚本在这个(0x80)之后的字节0x7f(即ascii)之前写得很好,它将所有输出转换为具有2个字节的utf8编码。问题是要避免这种情况,只写这样的东西:

...
0x7f
0x80
0x81
...

所以我需要像 8bit 编码这样的东西,但是经过一小时的搜索,我没有任何结果

还有一个小问题,数字 <16 返回一个无法解码的十六进制值,但我可能会找到解决方案

4

2 回答 2

3

您可以使用 Latin-1(也称为ISO_8859-1)编码。

charset="iso-8859-1"

请参阅屏幕截图以证明文件中每个字符只需要一个字节: hexeditor 显示文件的屏幕截图

于 2012-10-04T13:58:03.187 回答
1

如果您正在寻找一个长度为 256 字节、代表 0x00 到 0xFF 的文件,那么您可以使用:

with open('binary.dat', 'wb') as fout:
    fout.write(bytes(range(256)))
于 2012-10-04T13:51:51.550 回答