Как преобразовать 32-разрядный int со знаком в 32-разрядный int без знака?

это то, что у меня есть, в настоящее время. Есть ли лучший способ сделать это?

import struct
def int32_to_uint32(i):
    return struct.unpack_from("I", struct.pack("i", i))[0]

2 ответов


Не уверен, что это "лучше" или нет...

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) )