python 中带符号的十六进制短符号的带符号十进制
Signed decimal from a signed hex short in python
我想知道是否有任何简单快捷的方法来获取 python 中有符号十六进制的十进制值。
我检查十六进制代码值的方法是在终端中打开 python 并输入十六进制,它 return 是这样的小数:
>>>0x0024
36
>>>0xcafe
51966
所以我想知道,有什么方法可以对带符号的短十六进制执行此操作吗?例如 0xfffc 应该 return -4
如果您可以使用 NumPy 数值类型,您可以使用 np.int16
类型转换
>>> import numpy as np
>>> np.int16(0x0024)
36
>>> np.int16(0xcafe)
-13570
>>> np.int16(0xfffc)
-4
>>> np.uint16(0xfffc)
65532
>>> np.uint16(0xcafe)
51966
Python 语言指定了整数的统一表示,numbers.Integral
class,numbers.Rational
的子类型。在Python3中,对该类型的范围没有具体的限制。在 Python 2 中只指定了最小范围,即 numbers.Integral
应该至少有 -2147483648 到 2147483647 的范围,对应于 32 位表示。
NumPy 实现更接近机器架构。为了有效地实现数值运算,它提供了 fixed width datatypes,例如 int8
、int16
、int32
和 int64
。
您可以使用 int
类方法 from_bytes
并为其提供字节:
>>> int.from_bytes(b'\xfc\xff', signed=True, byteorder='little')
-4
import ctypes
def hex2dec(v):
return ctypes.c_int16(v).value
print hex2dec(0xfffc)
print hex2dec(0x0024)
print hex2dec(0xcafe)
我想知道是否有任何简单快捷的方法来获取 python 中有符号十六进制的十进制值。
我检查十六进制代码值的方法是在终端中打开 python 并输入十六进制,它 return 是这样的小数:
>>>0x0024
36
>>>0xcafe
51966
所以我想知道,有什么方法可以对带符号的短十六进制执行此操作吗?例如 0xfffc 应该 return -4
如果您可以使用 NumPy 数值类型,您可以使用 np.int16
类型转换
>>> import numpy as np
>>> np.int16(0x0024)
36
>>> np.int16(0xcafe)
-13570
>>> np.int16(0xfffc)
-4
>>> np.uint16(0xfffc)
65532
>>> np.uint16(0xcafe)
51966
Python 语言指定了整数的统一表示,numbers.Integral
class,numbers.Rational
的子类型。在Python3中,对该类型的范围没有具体的限制。在 Python 2 中只指定了最小范围,即 numbers.Integral
应该至少有 -2147483648 到 2147483647 的范围,对应于 32 位表示。
NumPy 实现更接近机器架构。为了有效地实现数值运算,它提供了 fixed width datatypes,例如 int8
、int16
、int32
和 int64
。
您可以使用 int
类方法 from_bytes
并为其提供字节:
>>> int.from_bytes(b'\xfc\xff', signed=True, byteorder='little')
-4
import ctypes
def hex2dec(v):
return ctypes.c_int16(v).value
print hex2dec(0xfffc)
print hex2dec(0x0024)
print hex2dec(0xcafe)