2013-04-11 38 views
3

除了關鍵術語外,0xFF20的單詞值是-224。從int('FF20', 16)我得到65312Python中十六進制值的單詞

考慮到語言的高級特性,在Python中獲取十六進制字符串的「字」值的方法是什麼?

+2

你要簽名的價值,你的意思是? – Patashu 2013-04-11 01:40:29

+0

由於缺乏更好的術語,是的! – 2013-04-11 01:41:13

+1

@AndrewBestic,這是[最好](http://en.wikipedia.org/wiki/Signed_number_representations)! – 2013-04-11 03:34:00

回答

4

如果你想籤超值,喜歡Pantashu提到的,那麼你可以使用​​

ctypes.c_short(int('FF20', 16)).value 
+4

LOL,Pantashu :) – Patashu 2013-04-11 01:42:37

+0

@Patashu,哎呦我的壞!這是我得到的不是簡單地複製你的名字:) – 2013-04-11 01:43:22

+0

如果你知道十六進制字符串會提前多長時間(所以你可以使用正確的ctype),你的回答是很好的。否則會變得混亂。 – Patashu 2013-04-11 01:44:34

3

如果第一個字符的高位已設置(8-F),則在解析該值後,從值中減去值0x1000 ...(0字的數目等於該單詞中的十六進制字符數)。

例如FF20有它的高位設置,將它轉換爲十進制並從它減去0x10000(65536 - 65312 = -224)

通過計算2的冪次數爲4 *的十六進制字符數,可以計算值0x100 ...在詞中。例如2 ^(4×4)= 65536

+0

我用'如果(HexValue [0:1]> 7):'它工作得很好,謝謝 – 2013-04-11 01:57:12