gpt4 book ai didi

python - 带符号的 2 的补码十六进制值

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:11 24 4
gpt4 key购买 nike

当我这样做时在 python 终端上:-

In [6]: 0xffffff85
Out[6]: 4294967173

In [9]: "%d" %(0xffffff85)
Out[9]: '4294967173'

我希望能够在 0xffffff85 中给出并在 python 中获得带符号的等效十进制数(在本例中为 -123)。我怎么能那样做?

在 C 中,我可以这样做:-

int main() { int x = 0xffffff85; printf("%d\n", x); }

最佳答案

您可以使用 ctypes 来做到这一点图书馆。

>>> import ctypes
>>> ctypes.c_int32(0xffffff85).value
-123

您也可以使用 bitstring 来做同样的事情图书馆。

>>> from bitstring import BitArray
>>> BitArray(uint = 0xffffff85, length = 32).int
-123L

如果没有外部/内部库,你可以这样做:

int_size = 32
a = 0xffffff85
a = (a ^ int('1'*a.bit_length())) + 1 if a.bit_length() == int_size else a

这取数字 a 的 2 的补码,如果 abit_length() 等于你的 int_size 值。 int_size 值是带符号二进制数的最大位长度 [此处为 a ]。

假设数字是有符号的,int_size 位负数的第一位(符号位)将设置为 1。因此 bit_length 将等于int_size.

关于python - 带符号的 2 的补码十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25096755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com