假设我有这个号码 i = -6884376
。
我如何将它称为无符号变量?
类似于 C 中的 (unsigned long)i
。
最佳答案
假设:
- 您想到了 2 的补码表示;并且,
- 作者
(unsigned long)
你意思是无符号32位整数,
那么你只需要添加2**32 (or 1 << 32)
为负值。
例如,将此应用于 -1:
>>> -1
-1
>>> _ + 2**32
4294967295L
>>> bin(_)
'0b11111111111111111111111111111111'
假设 #1 意味着您希望 -1 被视为一个 1 位的实心字符串,假设 #2 意味着您想要其中的 32 个。
但是,除了您之外,没有人可以说出您隐藏的假设是什么。例如,如果您有 1 的补码表示,那么您需要应用 ~
前缀运算符。 Python 整数努力给人一种使用无限宽 2 的补码表示的错觉(类似于常规 2 的补码,但具有无限数量的“符号位”)。
要复制平台 C 编译器的功能,您可以使用 ctypes
模块:
>>> import ctypes
>>> ctypes.c_ulong(-1) # stuff Python's -1 into a C unsigned long
c_ulong(4294967295L)
>>> _.value
4294967295L
C 的 unsigned long
在运行此示例的盒子上恰好是 4 个字节。
关于python - 如何在python中将有符号整数转换为无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20766813/