我有一个二进制文件,我想读取数据,一次一个字节,在运行时打印每个字节。
我目前的代码是:
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 个字节。
这是怎么回事?
谢谢。
请您参考如下方法:
笑脸是Windows codepage-850的字符1(白脸)或2(黑脸),这样就OK了。
如果你想打印数字,就用
print ord(byte)
