Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将从文件中读取的二进制序列转换为固定点数_Python_Binary_Fixed Point_Algorithmic Trading_Datafeed - Fatal编程技术网

Python 将从文件中读取的二进制序列转换为固定点数

Python 将从文件中读取的二进制序列转换为固定点数,python,binary,fixed-point,algorithmic-trading,datafeed,Python,Binary,Fixed Point,Algorithmic Trading,Datafeed,我正在尝试解析一个文件,其中包含瘙痒消息: , , 每个价格表示为一个32位的固定点数,包含18个整部分位和14个小数部分位。(6位整数后接4位小数) e、 g 我已经看过struct类,但它只处理从二进制编码的c结构转换而来的整个字节 我已经看过decimal.decimal模块,但似乎只能使用字符串对其进行实例化,这假设您已经拥有字符串格式的数字。Python的struct.unpack()正是您所需要的。您只需要制定适当的格式字符串,这样模块就可以知道哪些字段在哪里以及它们的二进制格式,并

我正在尝试解析一个文件,其中包含瘙痒消息:

, ,

每个价格表示为一个32位的固定点数,包含18个整部分位和14个小数部分位。(6位整数后接4位小数)

e、 g

我已经看过struct类,但它只处理从二进制编码的c结构转换而来的整个字节


我已经看过decimal.decimal模块,但似乎只能使用字符串对其进行实例化,这假设您已经拥有字符串格式的数字。

Python的
struct.unpack()
正是您所需要的。您只需要制定适当的格式字符串,这样模块就可以知道哪些字段在哪里以及它们的二进制格式,并且您应该能够快速解码数据


你用比特来解释事情,但这并不是瘙痒真正的工作原理。固定小数字段的长度实际上是N字节,并隐含一些小数移位。因此,您可以将价格字段读取为整数,然后将其除以1e4以获得浮点值。

Struct.unpack不起作用-因为OP的数字是以ASCII表示的二进制基数。我想您不明白他试图解析的格式。你知道OP中链接的ITCH 4.1是一个二进制协议,并且不使用ASCII进行数字运算吗?欢呼的约翰,只是拿出一些添加消息,并对照过去的价格进行检查,似乎你是对的。现在我觉得有点傻,因为很明显它只是1000分。我想投这个票,但我可能还没有足够的代表权:/。@JohnZwinck:的确,我错了。谢谢你指出这一点。
200,000.0000
110000110101000000 00000000000000