Найти - Пользователи
Полная версия: бинарные данные и биение строки по 8 символов
Начало » Python для новичков » бинарные данные и биение строки по 8 символов
1
billy_bob
Здравствуйте.
Извините, перечитал форум на данную тему, но что то до меня так и не доходит.
есть большая-пребольшая строка, содержащая значения типа 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.
billy_bob
Андрей Светлов
Во первых, существует операция s - вернет вторую восьмерку байт.
мм.. я почему и задал вопрос по поводу строк, потому что просто выдернуть конкретные 8 байт из строки я могу, а вот в цикле выдергивать по 8 байт что то не доходит как. может перед монитором пересидел, утомился, но блин..
billy_bob
мм.. с чтением строки разобрался, спасибо за подсказку в сторону 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?
billy_bob
да, некоторые значения отображаются как ‘nan’. Это 0 или результат неверного преобразования в float?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB