यह मेरे पास है, वर्तमान में। क्या ऐसा करने के लिए कोई अच्छा तरीका है?हस्ताक्षरित 32-बिट int को बिना हस्ताक्षर किए 32-बिट int को कैसे परिवर्तित करें?
import struct
def int32_to_uint32(i):
return struct.unpack_from("I", struct.pack("i", i))[0]
यह मेरे पास है, वर्तमान में। क्या ऐसा करने के लिए कोई अच्छा तरीका है?हस्ताक्षरित 32-बिट int को बिना हस्ताक्षर किए 32-बिट int को कैसे परिवर्तित करें?
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))
कि एक पायथन पूर्णांक प्रकार देता है, हालांकि, जो शायद इस संदर्भ में एक सार्थक परिणाम नहीं है, क्योंकि यह वास्तव में अब एक uint32 नहीं है। मुझे लगता है कि यह इस बात पर निर्भर करता है कि वह इसका उपयोग कैसे कर रहा है। – Cairnarvon
@Cairnarvon: '1' और' -1' के लिए, ओपी का संस्करण क्रमश: 'int' और' long' देता है। मेरा संस्करण दोनों के लिए 'लंबा' देता है। – martineau
अच्छा! मैं शायद यह पसंद करेंगे। क्या यह क्रॉस-प्लेटफॉर्म के रूप में 'स्ट्रक्चर' है? – Claudiu