Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
input = bytearray(open('test.bup', 'rb').read())
start = end = fileno = 0
while True:
start = input.find(bytearray([0x4d, 0x54, ...]), start)
if start == -1:
break
end = input.find(bytearray([0xff, 0x2f]), end)
open('mid%i.mid' % fno, 'wb').write(bytearray([0x4d, 0x54, ...]) + input[start:end])
fno += 1
Copy Source | Copy HTML
- # Выносим и именуем константы, чтобы в программе не было "магических чисел"
- START_MARK = "\0x4d\0x54..."
- END_MARK = "\0xff\0x2f...."
- FILE_FINALIZE = "\0x4d\0x54\0x68\0x64..."
-
- # Читаем данные, инициализируем счетчик
- input = open('test.bup', 'rb').read()
- fileno = 0
-
- # Пока в input есть нужный нам маркер...
- while START_MARK in input:
- # Определяем границы песни
- start = input.find(START_MARK)
- end = input.find(END_MARK)
-
- # Записываем в файл
- open('mid%i.mid' % fileno, 'wb').write(input[start:end]+FILE_FINALIZE)
-
- # Сдвигаем input на конец записанной песни...
- input = input[end:]
- fileno += 1
Note: This function is binary-safe.© http://php.net/manual/en/function.strpos.php
О midi-файлах и о PHP, как инструменте повседневного программирования на живом примере