python - पाइथन में हेक्स स्ट्रिंग को int में कनवर्ट करें




string hex (7)

मैं एक हेक्स स्ट्रिंग को पायथन में एक int में कैसे परिवर्तित करूं?

मेरे पास इसे " 0xffff " या बस " ffff " के रूप में हो सकता है।


पाइथन में हेक्स स्ट्रिंग को int में कनवर्ट करें

मेरे पास इसे "0xffff" या बस "ffff" रूप में हो सकता है।

एक स्ट्रिंग को एक int में कनवर्ट करने के लिए, जिस स्ट्रिंग को आप कनवर्ट कर रहे हैं उसके साथ स्ट्रिंग को int पास करें।

दोनों तार इस तरह से रूपांतरण के लिए पर्याप्त होंगे:

>>> string_1 = "0xffff"
>>> string_2 = "ffff"
>>> int(string_1, 16)
65535
>>> int(string_2, 16)
65535

int infer दे रहे हैं

यदि आप आधार के रूप में 0 पास करते हैं, तो int स्ट्रिंग में उपसर्ग से आधार का अनुमान लगाएगा।

>>> int(string_1, 0)
65535

हेक्साडेसिमल उपसर्ग के बिना, 0x , int में पर्याप्त जानकारी नहीं है जिसके साथ अनुमान लगाया जा सकता है:

>>> int(string_2, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 0: 'ffff'

शाब्दिक:

यदि आप स्रोत कोड या दुभाषिया में टाइप कर रहे हैं, तो पाइथन आपके लिए रूपांतरण करेगा:

>>> integer = 0xffff
>>> integer
65535

यह ffff साथ काम नहीं करेगा क्योंकि पायथन सोचेंगे कि आप इसके बजाय एक वैध पायथन नाम लिखने की कोशिश कर रहे हैं:

>>> integer = ffff
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'ffff' is not defined

पायथन संख्या एक संख्यात्मक चरित्र से शुरू होती है, जबकि पायथन नाम संख्यात्मक चरित्र से शुरू नहीं हो सकते हैं।


'0x' उपसर्ग के साथ, आप eval फ़ंक्शन का भी उपयोग कर सकते हैं

उदाहरण के लिए

>>a='0xff'
>>eval(a)
255

उपरोक्त दान के उत्तर में जोड़ना: यदि आप हेक्स स्ट्रिंग के साथ int () फ़ंक्शन की आपूर्ति करते हैं, तो आपको आधार को 16 के रूप में निर्दिष्ट करना होगा या ऐसा नहीं लगता कि आपने इसे वैध मान दिया है। आधार 16 निर्दिष्ट करना हेक्स संख्याओं के लिए अनावश्यक है जो तारों में निहित नहीं है।

print int(0xdeadbeef) # valid

myHex = "0xdeadbeef"
print int(myHex) # invalid, raises ValueError
print int(myHex , 16) # valid

एक डब्ल्यूडब्ल्यूओआर को हेक्स से एक हस्ताक्षरित पूर्णांक में बदलने के लिए, इस तरह के दो पूरक लागू करें:

~ (0xffffffff - int('0xdeadbeef', 16)) + 1

पायथन 2.7 में, int('deadbeef',10) काम नहीं कर रहा है।

मेरे लिए निम्नलिखित काम करता है:

>>a = int('deadbeef',16)
>>float(a)
3735928559.0

फॉर्मेटर विकल्प '% x'% असाइनमेंट कथन में भी मेरे लिए काम करता प्रतीत होता है। (पाइथन 3.0 और बाद में मानते हुए)

उदाहरण

a = int('0x100', 16)
print(a)   #256
print('%x' % a) #100
b = a
print(b) #256
c = '%x' % a
print(c) #100

int(hexString, 16) चाल करता है, और 0x उपसर्ग के साथ और बिना काम करता है:

>>> int("a", 16)
10
>>> int("0xa",16)
10




hex