Alex_Kutsan
Ноя. 24, 2010 21:34:23
Нужно представить звук в виде строки 16 ричных чисел. Как это делается когда я закидываю песню в НEX редактор.
Андрей Светлов
Ноя. 24, 2010 22:07:31
array.array?
Alex_Kutsan
Ноя. 24, 2010 22:26:54
а можно подробней? что значит array.array?
Вот я открыл музыкальный фаил
f = open('/media/Files/Alex Doc/Музыка/Реквием по мечте.mp3','r')
нашел вот код ддля записи опрделённого байта в фаил
f.seek(номер байта);
f.write(chr(свой новый байт))
но как прочитать определённый байт файла? и как точно узнать их количество?
Ferroman
Ноя. 24, 2010 23:06:40
Я найду ответы на эти вопросы с 4 запросов в гугл.
Андрей Светлов
Ноя. 24, 2010 23:22:23
Тема перемещена в “Питон для Чайников”.
И будет находится там до тех пор, пока вопросы не станут сложнее.
Alex_Kutsan
Ноя. 25, 2010 00:22:42
Простите за глупые вопросы.Наверно я разучился пользоватся гуглом. подскажите как сформулировать вопрос?
А пока вот до чего дошел
>>> f.seek(128)
>>> x = f.read(1)
>>> x
'\xd2' #это похоже на юникодовский символ
>>> print x.decode('utf-8')
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
print x.decode('utf-8')
File "/usr/lib/python2.6/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xd2 in position 0: unexpected end of data
что такое ‘\xd2’? и как мне его увидеть в 16 ричном виде?
igor.kaist
Ноя. 25, 2010 12:28:21
элементарно:
x='\xd2\x12\xab'
print x.encode('hex')
Только зачем вам это с mp3 нужно? wave вы все равно так не получите…
Alex_Kutsan
Ноя. 25, 2010 22:40:18
Долго расказывать зачем это нужно.
Но вот второй вопрос
x = ‘\xd2’
>>> x = hex(int(x.encode('hex'),16))
>>> x
'0xd2'
как полученое значение опять записать в виде ‘/xd2’ конечно можно просто заменить 0 на /
>>> x = ‘/’ + x
>>> x
'/xd2
но если заново произвести анологичную операцию
>>> x = hex(int(x.encode('hex'),16))
>>> x
'0x2f786432'
то окажется что прошлый икс вовсе не такой как сейчас.
Значит дело кодировок. Это Юникод как преобразовать?
>>> x
'\xd2'
>>> x = hex(int(x.encode('hex'),16))
>>> x = unicode(x) # так неподходит, так какже?
>>> x
u'0xd2'
igor.kaist
Ноя. 25, 2010 22:56:57
Кто вам сказал что это юникод вообще?
chr(int('\xd2'.encode('hex'),16))
ofigetitelno
Ноя. 26, 2010 00:25:30
:)
попробуйте перечитать комментарии сначала
я понимаю, это сложно, но попробуйте
если не получится посмотрите по ссылке
http://docs.python.org/library/array.html#module-arrayтам тоже всё ужасно сложно, но обратите внимание на array.fromfile