Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 24, 2010 21:34:23

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Звук в HEX виде

Нужно представить звук в виде строки 16 ричных чисел. Как это делается когда я закидываю песню в НEX редактор.



Офлайн

#2 Ноя. 24, 2010 22:07:31

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Звук в HEX виде

array.array?



Офлайн

#3 Ноя. 24, 2010 22:26:54

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Звук в HEX виде

а можно подробней? что значит array.array?

Вот я открыл музыкальный фаил

f = open('/media/Files/Alex Doc/Музыка/Реквием по мечте.mp3','r')

нашел вот код ддля записи опрделённого байта в фаил
f.seek(номер байта);
f.write(chr(свой новый байт))

но как прочитать определённый байт файла? и как точно узнать их количество?



Отредактировано (Ноя. 24, 2010 22:42:01)

Офлайн

#4 Ноя. 24, 2010 23:06:40

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Звук в HEX виде

Я найду ответы на эти вопросы с 4 запросов в гугл.

Офлайн

#5 Ноя. 24, 2010 23:22:23

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Звук в HEX виде

Тема перемещена в “Питон для Чайников”.
И будет находится там до тех пор, пока вопросы не станут сложнее.



Офлайн

#6 Ноя. 25, 2010 00:22:42

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Звук в HEX виде

Простите за глупые вопросы.Наверно я разучился пользоватся гуглом. подскажите как сформулировать вопрос?
А пока вот до чего дошел

>>> 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 ричном виде?



Офлайн

#7 Ноя. 25, 2010 12:28:21

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Звук в HEX виде

элементарно:

x='\xd2\x12\xab'
print x.encode('hex')
Только зачем вам это с mp3 нужно? wave вы все равно так не получите…



Офлайн

#8 Ноя. 25, 2010 22:40:18

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Звук в HEX виде

Долго расказывать зачем это нужно.
Но вот второй вопрос
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'



Отредактировано (Ноя. 25, 2010 22:40:38)

Офлайн

#9 Ноя. 25, 2010 22:56:57

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Звук в HEX виде

Кто вам сказал что это юникод вообще?
chr(int('\xd2'.encode('hex'),16))



Офлайн

#10 Ноя. 26, 2010 00:25:30

ofigetitelno
От:
Зарегистрирован: 2006-08-01
Сообщения: 136
Репутация: +  0  -
Профиль   Отправить e-mail  

Звук в HEX виде

:)
попробуйте перечитать комментарии сначала
я понимаю, это сложно, но попробуйте
если не получится посмотрите по ссылке
http://docs.python.org/library/array.html#module-array
там тоже всё ужасно сложно, но обратите внимание на array.fromfile



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version