Форум сайта python.su
Здравствуйте.
Извините, перечитал форум на данную тему, но что то до меня так и не доходит.
есть большая-пребольшая строка, содержащая значения типа double (сишные) подряд без разделителей в двоичном виде
(Пример: \x92|\x10\x88\x11\x17\x12&\x10\x11\x10\xe7\r\x88\x0f\xaa\x0e4\x10)
соответственно нужно преобразовать эту строку в список float-ов. Как я понял для этого нужно использовать модуль struct примерно в таком виде fft = struct.unpack('d', строка). Правильно ли я все понял?
И тогда соответственно вопрос - как организовать цикл чтения данных из строки по 8 символов?
Извините за примитивные вопросы, спасибо за понимание.
Офлайн
Во первых, существует операция s - вернет вторую восьмерку байт.
Во вторых, есть cStringIO.StringIO
В третьих, именно здесь уместнее будет использовать array.array.
Офлайн
Андрей Светловмм.. я почему и задал вопрос по поводу строк, потому что просто выдернуть конкретные 8 байт из строки я могу, а вот в цикле выдергивать по 8 байт что то не доходит как. может перед монитором пересидел, утомился, но блин..
Во первых, существует операция s - вернет вторую восьмерку байт.
Офлайн
мм.. с чтением строки разобрался, спасибо за подсказку в сторону 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)
Офлайн
да, некоторые значения отображаются как ‘nan’. Это 0 или результат неверного преобразования в float?
Офлайн