Python:读取和打印二进制文件

时间:2014-02-25 15:03:58

标签: python

我有一个二进制文件,我想一次读取一个字节的数据,在运行时打印每个字节。

我到目前为止的代码是:

f = open("test.dat", "rb")
try:
    byte = f.read(1)
    while byte != "":
        print byte
        raw_input("Press Enter to continue...")
        byte = f.read(1)
finally:
    f.close()

然而,这并没有给我预期的结果。基本上,我想为每个字节打印一个0到127之间的数字。但是,第一次打印给了我一个笑脸符号,我知道它不在ASCII的前128个条目中。因此,我似乎打印的不只是一个字节 - 即使我只指定在f.read中读取1个字节。

这里发生了什么?

感谢。

2 个答案:

答案 0 :(得分:7)

笑脸是Windows代码页-850的角色1(白脸)或2(黑脸),所以一切都好。

enter image description here

如果要打印该号码,请使用

print ord(byte)

答案 1 :(得分:2)

read(1)返回的是单字符字符串。尝试:

print ord(byte[0])

或者你可以做

print ord(byte)

因为Python没有单独的字符类型,ord()适用于单字符串字符串。