Чтение байтов из волнового файла 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