我为你挖了一点,我想你可以使用结构模块与
Kevin’s Summary Charts上的信息相结合.它们解释了用于各种IEEE 754浮点数的确切位模式.
唯一可能必须小心的是,如果我阅读关于这个IND终止值的主题,那么该值在C代码直接分配时会倾向于触发某种浮点中断,从而使其变为一个纯NaN.这反过来意味着这些人被建议在ASM而不是C中做这样的事情,因为C抽象了那些东西.由于不是我的领域,我不知道这种价值会在多大程度上混乱Python,我想我会提到它,所以你可以至少关注任何这样奇怪的行为. (见this question公认的答案).
>>> import struct
>>> struct.pack(">d", float('nan')).encode("hex_codec")
'fff8000000000000'
>>> import scipy
>>> struct.pack(">d", scipy.nan).encode("hex_codec")
'7ff8000000000000'
参考Kevin’s Summary Charts,这表明float(‘nan’)实际上在技术上是不确定的值,而scipy.nan是一个安静的NaN.
让我们尝试做一个信号NaN,然后验证它.
>>> try_signaling_nan = struct.unpack(">d", "\x7f\xf0\x00\x00\x00\x00\x00\x01")[0]
>>> struct.pack(">d", try_signaling_nan).encode("hex_codec")