2013-04-11 86 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