Почему метод записи в двоичный файл иногда возвращает букву, а другой - гекс? - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь прочитать файл BMP. Я получаю разные записи в байтах, которые читаю. Я хотел бы понять, почему метод «чтения» действует таким образом.

Для этой цели: - Я открываю файл в режиме двоичного чтения. - Я создаю пустой список. - Я иду через двоичный файл, читая его побайтово. - Каждый раз, когда я читаю байт, я загружаю его в список.

  • Когда я перехожу список, я получаю потрясающие результаты.
  • Иногда я получаю двоичное «письмо», например, b'B '.
  • Другие я получаю бинарный гекс, например 0x38.

Почему он действует иногда по-другому, а другие по-другому? Почему он не всегда возвращает гекс?

def main ():

fichero = open("C:\\Users\\gsanmar\\Pictures\\astilleros-ferrol.bmp", "rb")

bytesDelFichero = []
for i in range(0,70):
    bytesDelFichero.append(fichero.read(1))

for valor in bytesDelFichero:
    print(valor)

Основной ()

Фактические результаты:

В» b'M» Ь '\ XF6' b'i» В'0' Ь '\ x00' Ь '\ x00' Ь '\ x00' Ь '\ x00' Ь '\ x00' b'6' Ь '\ x00' Ь '\ x00' Ь '\ x00' Ь «(» Ь '\ x00' Ь '\ x00' Ь '\ x00' б «@» Ь '\ x06' Ь '\ x00' Ь '\ x00' Ь '\ x95' Ь '\ x02' ...

1 Ответ

2 голосов
/ 11 июня 2019

Вот как печатаются байты - если они печатаются символы (буквы, цифры ...), вы увидите их в выводе вместо шестнадцатеричных кодов.

Если вы хотите везде использовать шестнадцатеричные коды, сделайте что-нибудькак:

for valor in bytesDelFichero:
    print(hex(int(valor)))
...