2011-06-03 134 views
1

嘿所有,我有點麻煩使用struct.pack函數打包numpy.float32。使用struct.pack打包一個numpy.float32到4個字節

f32 = 38.2 
struct.pack('f', f32) 

在32位中,38.2的十六進制表示是0x4218CCCD。然而,當我使用Python終端運行上述代碼(輸入相應的模塊後),輸出爲:

'\xcd\xcc\x18B' 

我不明白爲什麼它留出的\ X42應該是在B之前。

我在64位機器上運行python 2.7的32位版本。有任何想法嗎?

在此先感謝。

回答

1

你有你想要的。

>>> "\x42" == "B" 
True 
+0

哦,我看到了,我沒有意識到,由於\ x42在ascii範圍內,它會打印ascii字符,儘管被打包爲一個浮點數。 – Trey 2011-06-03 19:01:15

+0

Python不會跟蹤如何創建字符串。它將始終以相同的方式打印特定的字節串。 – MRAB 2011-06-03 19:18:11

0

\x42對應的ASCII B