这看起来很愚蠢,但我在python中是一个完整的新手。
所以,我有一个以
开头的二进制文件ff d8 ff e0 00 10 4a
(通过Hex Editor Neo和java程序看到)
然而,当我尝试用
的python阅读它时with open(absolutePathInput, "rb") as f:
while True:
current_byte = f.read(1)
if(not current_byte):
break
print(hex(current_byte[0]))
我得到了
ff d8 ff e0 0 10 31
似乎只要第一个0x00被重新出现就会出错。
我做错了什么? 谢谢你!答案 0 :(得分:1)
我认为问题是你试图取消引用current_byte,好像它是一个数组,但它只是一个字节
def test_write_bin(self):
fname = 'test.bin'
f = open(fname, 'wb')
# ff d8 ff e0 00 10 4a
f.write(bytearray([255, 216, 255, 224, 0, 16, 74]))
f.close()
with open(fname, "rb") as f2:
while True:
current_byte = f2.read(1)
if (not current_byte):
break
val = ord(current_byte)
print hex(val),
print
该程序产生输出:
0xff 0xd8 0xff 0xe0 0x0 0x10 0x4a
答案 1 :(得分:0)
import binascii
with open(absolutePathInput, "rb") as f:
buff = f.read()
line = binascii.hexlify(buff)
hex_string = [line[i:i+2] for i in range(0, len(line), 2)]
简单而暴力