2013-05-09 12 views

risposta

16

Non sono sicuro se è "bello" o no ...

import ctypes 

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

Quello restituisce un tipo intero Python, che probabilmente non è un risultato significativo in questo contesto, in quanto non è più un uint32. Suppongo che dipenda da come lo sta usando. – Cairnarvon

+0

@Cairnarvon: per '1' e' -1', la versione dell'OP restituisce rispettivamente un 'int' e un' long'. La mia versione restituisce un 'long' per entrambi. – martineau

+0

Bello! Probabilmente preferirei questo. È così multipiattaforma come 'struct'? – Claudiu

3

usando NumPy ad esempio:

import numpy 
result = numpy.uint32(numpy.int32(myval)) 

o anche su array,

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