Чтение байтов из волнового файла python

Я работаю над небольшим аудиопроектом, и часть его требует использования волновых файлов и файлов flac. Я пытаюсь выяснить, как читать метаданные в каждом и как добавлять теги вручную. У меня проблемы с выяснением, как читать байты такими, какие они есть.

Я ссылался на эту страницу и пару других, чтобы увидеть полный формат файла Wave, однако для некоторых файлов Wave есть некоторые расхождения. Я хочу иметь возможность видеть шестнадцатеричные байты, чтобы увидеть, какие различия происходят.

Используя просто open('fname', 'rb') и чтение, только возвращает байты в виде строк. Использование struct.unpack сработало для некоторых волновых файлов, однако оно ограничено печатью в виде строк, целых чисел или шортов, и я не могу точно понять, что происходит, когда я его использую. Есть ли другой способ прочитать этот файл в шестнадцатеричном формате?

Спасибо

1 ответ

Решение

Я предполагаю, что вы просто хотите отобразить содержимое двоичного файла в шестнадцатеричном формате. Во-первых, вам не нужно использовать Python для этого, так как некоторые редакторы изначально, например, vim.

Теперь, предполагая, что у вас есть строка, которую вы получили, прочитав файл, вы можете легко изменить ее на список шестнадцатеричных значений:

with open('fname', 'rb') as fd:      # open the file
    data = rd.read(16)               # read 16 bytes from it
    h = [ hex(ord(b)) for b in data] # convert the bytes to their hex value
    print (h)                        # prints a list of hexadecimal codes of the read bytes
Другие вопросы по тегам