Python 如何将有符号32位整数转换为无符号32位整数?

Python 如何将有符号32位整数转换为无符号32位整数?,python,integer,unsigned,signed,type-conversion,Python,Integer,Unsigned,Signed,Type Conversion,这就是我目前拥有的。有没有更好的办法 import struct def int32_to_uint32(i): return struct.unpack_from("I", struct.pack("i", i))[0] 不知道是不是“更好” import ctypes def int32_to_uint32(i): return ctypes.c_uint32(i).value 例如,使用numpy: import numpy result = numpy.uint32

这就是我目前拥有的。有没有更好的办法

import struct
def int32_to_uint32(i):
    return struct.unpack_from("I", struct.pack("i", i))[0]
不知道是不是“更好”

import ctypes

def int32_to_uint32(i):
    return ctypes.c_uint32(i).value

例如,使用numpy:

import numpy
result = numpy.uint32( numpy.int32(myval) )
甚至在阵列上

arr = numpy.array(range(10))
result = numpy.uint32( numpy.int32(arr) )

我刚开始学习python,但像这样简单的东西对值有效 在有符号32位整数的范围内

def uint(x):
  if x < 0:
    return hex(0xffff_ffff - abs(x) + 1)
  else:
    return hex(x)
def uint(x):
如果x<0:
返回十六进制(0xffff\U ffff-abs(x)+1)
其他:
返回十六进制(x)

返回Python整数类型,但在本上下文中这可能不是一个有意义的结果,因为它实际上不再是uint32。我想这取决于他如何使用它。@Cairnarvon:对于
1
-1
,OP的版本分别返回
int
long
。我的版本返回了一个
长的
。很好!我可能更喜欢这个。这是否像
struct
一样是跨平台的?@Claudiu:至于跨平台性,我只能说是这样。@Claudiu:FWIW,在Python 3.3中,您和我的版本都返回
int
。还有,你的偏好依据是什么?你从来没有说过你想要什么样的好东西。