我想我真正了解双精度数字的最好方法就是玩弄一下它们,我想做的一件事就是看看它们(几乎)的二进制表示。为此,在C中,BitConverter.DoubleToInt64Bits
函数非常有用,因为它(在转换成十六进制之后)让我了解了浮点数的“真正”性质。在
问题是我似乎找不到Python中的等效函数,有没有一种方法可以在Python函数中执行与BitConverter.DoubleToInt64Bits
相同的操作?在
谢谢。在
编辑:
下面的一个答案建议usinginascii.hexlify(struct.pack('d', 123.456)
将double转换为十六进制表示,但我仍然得到奇怪的结果。在
例如
inascii.hexlify(struct.pack('d', 123.456))
确实返回'77be9f1a2fdd5e40'
,但是如果我运行的代码在C#中应该是等价的,即
我得到了一个完全不同的号码:"405EDD2F1A9FBE77"
。我在哪里犯了错?在
使用^{} 和^{} 怎么样?在
struct format指定
d
表示double
c类型(8字节=64位)。有关其他格式,请参见Format characters。在更新
通过指定
^{pr2}$@
、=
、<
、>
、!
作为格式的第一个字符,可以指示字节顺序。(Byte Order, Size, and Alignment)相关问题 更多 >
编程相关推荐