Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 23, 2010 16:17:38

billy_bob
От:
Зарегистрирован: 2010-11-01
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

бинарные данные и биение строки по 8 символов

Здравствуйте.
Извините, перечитал форум на данную тему, но что то до меня так и не доходит.
есть большая-пребольшая строка, содержащая значения типа double (сишные) подряд без разделителей в двоичном виде
(Пример: \x92|\x10\x88\x11\x17\x12&\x10\x11\x10\xe7\r\x88\x0f\xaa\x0e4\x10)
соответственно нужно преобразовать эту строку в список float-ов. Как я понял для этого нужно использовать модуль struct примерно в таком виде fft = struct.unpack('d', строка). Правильно ли я все понял?
И тогда соответственно вопрос - как организовать цикл чтения данных из строки по 8 символов?
Извините за примитивные вопросы, спасибо за понимание.



Офлайн

#2 Ноя. 23, 2010 16:23:07

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

бинарные данные и биение строки по 8 символов

Во первых, существует операция s - вернет вторую восьмерку байт.
Во вторых, есть cStringIO.StringIO
В третьих, именно здесь уместнее будет использовать array.array.



Офлайн

#3 Ноя. 23, 2010 16:30:04

billy_bob
От:
Зарегистрирован: 2010-11-01
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

бинарные данные и биение строки по 8 символов

Андрей Светлов
Во первых, существует операция s - вернет вторую восьмерку байт.
мм.. я почему и задал вопрос по поводу строк, потому что просто выдернуть конкретные 8 байт из строки я могу, а вот в цикле выдергивать по 8 байт что то не доходит как. может перед монитором пересидел, утомился, но блин..



Офлайн

#4 Ноя. 23, 2010 16:57:06

billy_bob
От:
Зарегистрирован: 2010-11-01
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

бинарные данные и биение строки по 8 символов

мм.. с чтением строки разобрался, спасибо за подсказку в сторону cStringIO
получилось следующее

    file = cStringIO.StringIO(fft[0])
a = set()
while 1:
buff = file.read(8)
if not buff:
break
ff = struct.unpack('d', buff)
a.add(ff)
А что не так в данном случае с struct? и почему лучше array?



Офлайн

#5 Ноя. 23, 2010 17:03:25

billy_bob
От:
Зарегистрирован: 2010-11-01
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

бинарные данные и биение строки по 8 символов

да, некоторые значения отображаются как ‘nan’. Это 0 или результат неверного преобразования в float?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version