Преобразование двоичной последовательности, считанной из файла, в число с фиксированной точкой - PullRequest
2 голосов
/ 30 марта 2012

Я пытаюсь проанализировать файл, в котором есть сообщения ITCH:

http://www.nasdaqtrader.com/Trader.aspx?id=DPSpecs_USEquities#TVITCH¬ http://www.nasdaqtrader.com/content/technicalsupport/specifications/dataproducts/NQTV-ITCH-V4_1.pdf¬

Каждая цена представлена ​​как 32-битное число с фиксированной точкой с 18биты целой части и 14 битов десятичной части.(6 целых чисел, за которыми следуют 4 десятичных знака)

например,

200,000.0000
110000110101000000 00000000000000

Я посмотрел на класс struct, но это касается только целых байтов, так как он предназначен для преобразования из двоичного кодаc структурирует.

Я посмотрел на десятичный модуль. Десятичный, но кажется, что его можно создать только с использованием строки, и это предполагает, что у вас уже есть число в формате строки.

1 Ответ

2 голосов
/ 30 марта 2012

Python's struct.unpack() - это именно то, что вам нужно. Вам просто нужно сформулировать соответствующую строку формата, чтобы модуль мог знать, где находятся поля и какой у них двоичный формат, и вы сможете быстро декодировать свои данные.

Вы объясняли вещи в терминах битов, но это не так, как на самом деле работает ITCH. Поля с фиксированными десятичными числами действительно имеют длину N байтов, подразумевается некоторый десятичный сдвиг. Таким образом, вы можете прочитать поле цены как целое число, а затем разделить его на 1e4, чтобы получить значение с плавающей точкой.

...