如何在python中将有符号转换为无符号整数
假设我有这个号码i = -6884376
。我如何将其称为无符号变量?像(unsigned long)i
C一样
回答:
:
- 您会想到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
unsigned long
在运行此示例的盒子上,C恰好是4个字节。
以上是 如何在python中将有符号转换为无符号整数 的全部内容, 来源链接: utcz.com/qa/431106.html