我想我真正感受到雙精度數字的最好方法就是和他們一起玩,我想做的事情之一是看他們(幾乎)二進制表示。爲此,在C#中,函數BitConverter.DoubleToInt64Bits
非常有用,因爲它(在轉換爲十六進制之後)讓我看看浮點數的「真實」性質。BitConverter.DoubleToInt64Bits在Python中相當於
問題是,我似乎無法在Python中找到等效函數,是否有辦法在python函數中執行與BitConverter.DoubleToInt64Bits
相同的操作?
謝謝。
編輯:
的回答波紋管建議usinginascii.hexlify(struct.pack('d', 123.456)
的雙重轉換爲十六進制表示的,但我仍然得到奇怪的結果。
例如,
inascii.hexlify(struct.pack('d', 123.456))
確實做回'77be9f1a2fdd5e40'
,但如果我運行代碼,應在C#等同,即
BitConverter.DoubleToInt64Bits(123.456).ToString("X")
我得到一個完全不同的數字:"405EDD2F1A9FBE77"
。我在哪裏犯了我的錯誤?
它們並不完全不同。它們是相反的順序相同的字節。 405EDD2F1A9FBE77更有用,因爲它按照與IEEE 754規範相同的順序將字節顯示爲十六進制數字對,所以我會嘗試將數據轉換爲該順序。 –