Я пытаюсь считать байт файла байтом, но я не уверен, как сделать это. Я пытаюсь сделать это как этот:
file = open(filename, 'rb')
while 1:
byte = file.read(8)
# Do something...
Это делает переменный байт для содержания 8 следующих битов в начале каждого цикла? Не имеет значения, каковы те байты действительно. Единственная вещь, которая вопросы - то, что я должен считать файл в 8-разрядных стеках.
Править:
Также я собираю те байты в списке, и я хотел бы распечатать их так, чтобы они не распечатывали как символы ASCII, но как необработанные байты т.е. когда я печатаю это bytelist, он дает результат как
['10010101', '00011100', .... ]
Чтобы ответить на вторую часть вашего вопроса, для преобразования в двоичный формат вы можете использовать строку формата и функцию ord
:
>>> byte = 'a'
>>> '{0:08b}'.format(ord(byte))
'01100001'
Примечание что формат заполняется правильным количеством ведущих нулей, что, по-видимому, является вашим требованием. Для этого метода требуется Python 2.6 или новее.
Для чтения одного байта:
file.read(1)
8 бит — это один байт.
Показанный вами код будет читать 8 байт . Вы можете использовать
with open(filename, 'rb') as f:
while 1:
byte_s = f.read(1)
if not byte_s:
break
byte = byte_s[0]
...