我有一个我在Python程序中读取的bmp文件。一旦我读入字节,我想对我读入的每个字节进行逐位操作。我的程序是:
with open("ship.bmp", "rb") as f:
byte = f.read(1)
while byte != b"":
# Do stuff with byte.
byte = f.read(1)
print(byte)
输出:
b'\xfe'
我想知道如何对此进行操作?即将其转换为位。一些通用指针会很好。我缺乏Python经验,所以任何帮助都会受到赞赏!
答案 0 :(得分:2)
bytes
个对象会产生0到255之间的整数。因此,只需对索引结果执行位操作。
3>> b'\xfe'[0]
254
3>> b'\xfe'[0] ^ 0x55
171
答案 1 :(得分:2)
file.read(1)
构造一个长度为1个字节的对象,当您希望该字节为整数时,这有点过分。要以整数形式访问每个字节,以下内容将更简洁,并且具有使用for循环的好处。
with open("ship.bmp", "rb") as f:
byte_data = f.read()
for byte in byte_data:
# do stuff with byte. eg.
result = byte & 0x2
...