Двоичные данные выглядят так:
Код: Выделить всё
'\x14\x11\x00\x00{\x14\xaeG\xe1z(@\x9a\x99\x99\x99\x99\x99(@q=\n\xd7\xa3p(@\x9a\x99\x99\x99\x99\x99(@\xac\x00\x19\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00"\xd8\x18\xe0\xdc\xcc\x08'
Код: Выделить всё
StockID = reader.ReadInt32();
Open = reader.ReadDouble();
High = reader.ReadDouble();
Low = reader.ReadDouble();
Close = reader.ReadDouble();
Volume = reader.ReadInt64();
TotalTrades = reader.ReadInt32();
Timestamp = reader.ReadDateTime();
Код: Выделить всё
In [1]: barlength = 56; barformat = 'i4dqiq'
In [2]: pricebar = f.read(barlength)
In [3]: pricebar
Out[3]: '\x95L\x00\x00)\\\x8f\xc2\xf5\xc8N@D\x1c\xeb\xe26\xcaN@\x7fj\xbct\x93\xb0N@\xd7\xa3p=\n\xb7N@\xf6\xdb\x02\x00\x00\x00\x00\x00J\x03\x00\x00\x00"\xd8\x18\xe0\xdc\xcc\x08'
In [4]: struct.unpack(barformat, pricebar)
Out[4]:
(19605, # stock id
61.57, # open
61.579800000000006, # high
61.3795, # low
61.43, # close
187382, # volume -- seems reasonable
842, # TotalTrades -- seems reasonable
634124502600000000L # datetime -- no idea what this means!
)
- Я не уверен, какие символы формата соответствуют Int32 и Int64 в коде C#, хотя несколько разных попыток вернули один и тот же кортеж Python.
- Однако меня это беспокоит, поскольку вывод для некоторых полей не очень чувствителен к указанному мной формату: например, поле TotalTrades возвращает ту же сумму, если я укажу его как подписанное или беззнаковое int ИЛИ подписанное или unsigned long (l, L, i или I)
- Я не могу понять значение поля возврата даты. На самом деле это моя самая большая проблема.
Подробнее здесь: https://stackoverflow.com/questions/316 ... e-encoding
Мобильная версия