从以两个十六进制字符串传输的 C double 进行转换
我使用 Python 的第一天。
我喜欢过滤由 C 生成的跟踪文件。 C 中的每个双精度数在文件中的格式如下 两个十六进制字符串,代表 64 双精度数的 32 位。
例如 1234567890.3(C 双)
内部文件:
0xb4933333
0x41d26580
如何解析和组合它以进一步使用 Python 浮点数?
提前致谢
my very first day with Python.
I like to filter on a trace file generated by C.
Each double from C is formatted in the file by
two hex strings representing 32 bit of the 64 double.
e.g. 1234567890.3 (C double)
inside file:
0xb4933333
0x41d26580
How can I parse and combine it to further work with a Python float?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
struct
,对“double”使用“d”修饰符:请注意附加双精度数的顺序,上面假设是大端机器。另外,我删除了
0x
,因为decode
函数不需要它。编辑:如果您使用的是 Python 3,则需要使用
bytes.fromhex
而不是''.decode('hex')
。只是给出一个替代方案(上面是一个非常好的解决方案):
You can use
struct
, using the 'd' modifier for 'double':Be careful what order you append the doubles in, the above assumes a big-endian machine. Also, I stripped
0x
as thedecode
function doesn't expect it.edit: If you're using Python 3, you need to use
bytes.fromhex
instead of''.decode('hex')
.Just to give an alternative (the above is a very nice solution):
以下是浮点的 IEEE 标准及其创建方式:
http: //www.psc.edu/general/software/packages/ieee/ieee.php
Here is a the IEEE standard for floating points and how it is created:
http://www.psc.edu/general/software/packages/ieee/ieee.php