আমার কাছে স্ট্রিংতে হেক্স ডিজিটের দীর্ঘ ক্রম রয়েছে, যেমন
000000000000484240FA063DE5D0B744ADBED63A81FAEA390000 C8428640A43D5005BD44
কেবল অনেক দীর্ঘ, কয়েক কিলোবাইট। পাইথন ২.6 / ৩-তে বাইট অবজেক্টে এটিকে রূপান্তর করার কোনও অন্তর্নির্মিত উপায় আছে?
আমার কাছে স্ট্রিংতে হেক্স ডিজিটের দীর্ঘ ক্রম রয়েছে, যেমন
000000000000484240FA063DE5D0B744ADBED63A81FAEA390000 C8428640A43D5005BD44
কেবল অনেক দীর্ঘ, কয়েক কিলোবাইট। পাইথন ২.6 / ৩-তে বাইট অবজেক্টে এটিকে রূপান্তর করার কোনও অন্তর্নির্মিত উপায় আছে?
উত্তর:
পাইথন ২.7 এবং পাইথন 3 সহ উচ্চতরগুলিতে কাজ করে:
result = bytearray.fromhex('deadbeef')
দ্রষ্টব্য:bytearray.fromhex()
পাইথন ২.6- এ ফাংশনটি সহ একটি বাগ রয়েছে বলে মনে হচ্ছে । পাইথন.অর্গ ডকুমেন্টেশন বলে যে ফাংশনটি একটি স্ট্রিংটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে, তবে প্রয়োগ করা হলে নিম্নলিখিত ত্রুটিটি নিক্ষেপ করা হয়:
>>> bytearray.fromhex('B9 01EF')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: fromhex() argument 1 must be unicode, not str`
bytes(bytearray.fromhex('deadbeef'))
binascii.unhexlify()
।
result = bytes.fromhex(some_hex_string)
আপনি হেক্স কোডেক দিয়ে এটি করতে পারেন। অর্থাত:
>>> s='000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44'
>>> s.decode('hex')
'\x00\x00\x00\x00\x00\x00HB@\xfa\x06=\xe5\xd0\xb7D\xad\xbe\xd6:\x81\xfa\xea9\x00\x00\xc8B\x86@\xa4=P\x05\xbdD'
codecs.decode('0a0a0a', 'hex_codec')
2.x এবং 3.x :
ব্যবহার করে দেখুন binascii মডিউল
from binascii import unhexlify
b = unhexlify(myhexstr)
unhexlify
এখন কোনও স্ট্রিং গ্রহণ করবে না, তবে কেবল বাইটস। খুব সুন্দর নির্বোধ, তবে এর অর্থ আপনার ব্যবহার করা দরকারb = unhexlify(bytes(myhexstr, 'utf-8'))
import binascii
binascii.a2b_hex(hex_string)
যেভাবে আমি এটি করেছিলাম ts
import binascii
binascii.b2a_hex(obj)