পাইথনে বাইনারি, অক্টাল এবং হেক্সাডেসিমেল সংখ্যা এবং স্ট্রিং একে অপরের থেকে রূপান্তর করুন

ব্যবসায়

পাইথন বাইনারি, অক্টাল এবং হেক্সাডেসিমেল সংখ্যার পাশাপাশি সাধারণ দশমিক সংখ্যা হিসাবে সংখ্যা এবং স্ট্রিংগুলি পরিচালনা করতে পারে। তাদের মধ্যে রূপান্তর করাও সহজ।

এই বিভাগে, নমুনা কোড সহ নিম্নলিখিত বিষয়বস্তু ব্যাখ্যা করা হবে।

  • বাইনারি, অক্টাল এবং হেক্সাডেসিমেলে পূর্ণসংখ্যা লিখুন।
  • বাইনারি, অক্টাল এবং হেক্সাডেসিমেল নোটেশনে সংখ্যাগুলিকে স্ট্রিংগুলিতে রূপান্তর করুন।
    • অন্তর্নির্মিত ফাংশন (যেমন প্রোগ্রামিং ভাষায়)bin(),oct(),hex()
    • স্ট্রিং পদ্ধতিstr.format(), অন্তর্নির্মিত ফাংশনformat(), চ স্ট্রিং
    • একটি ঋণাত্মক পূর্ণসংখ্যাকে দুইটির পরিপূরক বিন্যাসে একটি স্ট্রিংয়ে রূপান্তর করুন।
  • বাইনারি, অক্টাল এবং হেক্সাডেসিমেল নোটেশনে স্ট্রিংগুলিকে সংখ্যায় রূপান্তর করুন।
    • অন্তর্নির্মিত ফাংশন (যেমন প্রোগ্রামিং ভাষায়)int()
  • আবেদনের উদাহরণ
    • বাইনারি স্ট্রিং পাটিগণিত
    • বাইনারি, অক্টাল এবং হেক্সাডেসিমেল সংখ্যার মধ্যে রূপান্তর করুন

বাইনারি, অক্টাল এবং হেক্সাডেসিমেলে পূর্ণসংখ্যা লিখুন।

নিম্নলিখিত উপসর্গগুলি যোগ করে, পূর্ণসংখ্যা int সংখ্যাগুলি যথাক্রমে বাইনারি, অক্টাল এবং হেক্সাডেসিমেলে লেখা যেতে পারে।
আপনি বড় অক্ষরও ব্যবহার করতে পারেন।

  • বাইনারি সংখ্যা:0bবা0B
  • অক্টাল:0oবা0O
  • হেক্সাডেসিমেল সংখ্যা:0xবা0X

print() এর আউটপুট হবে দশমিক স্বরলিপিতে।

bin_num = 0b10
oct_num = 0o10
hex_num = 0x10

print(bin_num)
print(oct_num)
print(hex_num)
# 2
# 8
# 16

Bin_num = 0B10
Oct_num = 0O10
Hex_num = 0X10

print(Bin_num)
print(Oct_num)
print(Hex_num)
# 2
# 8
# 16

এমনকি উপসর্গ সঙ্গে, টাইপ একটি পূর্ণসংখ্যা int.

print(type(bin_num))
print(type(oct_num))
print(type(hex_num))
# <class 'int'>
# <class 'int'>
# <class 'int'>

print(type(Bin_num))
print(type(Oct_num))
print(type(Hex_num))
# <class 'int'>
# <class 'int'>
# <class 'int'>

যেহেতু এটি একটি পূর্ণসংখ্যার ধরন, এটি নিয়মিত গাণিতিক ক্রিয়াকলাপের জন্য ব্যবহার করা যেতে পারে।

result = 0b10 * 0o10 + 0x10
print(result)
# 32

পাইথন 3.6 দিয়ে শুরু করে, সংখ্যায় আন্ডারস্কোর _ সন্নিবেশ করা সম্ভব। একটি আন্ডারস্কোর _ পুনরাবৃত্তি করার ফলে একটি ত্রুটি দেখা দেবে, তবে যতক্ষণ না আপনি এটি পুনরাবৃত্তি করবেন ততক্ষণ আপনি যতটা খুশি সন্নিবেশ করতে পারেন।

_ আন্ডারস্কোর সংখ্যাটিকে প্রভাবিত করে না, তাই অনেক সংখ্যা থাকলে এটি একটি বিভাজক হিসাবে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, প্রতি চারটি সংখ্যায় একটি আন্ডারস্কোর _ সন্নিবেশ করা সহজ।

print(0b111111111111 == 0b1_1_1_1_1_1_1_1_1_1_1_1)
# True

bin_num = 0b1111_1111_1111
print(bin_num)
# 4095

বাইনারি, অক্টাল এবং হেক্সাডেসিমেল নোটেশনে সংখ্যাগুলিকে স্ট্রিংগুলিতে রূপান্তর করুন।

বাইনারি, অক্টাল বা হেক্সাডেসিমেল নোটেশনে একটি সংখ্যাকে একটি স্ট্রিংয়ে রূপান্তর করতে, নিম্নলিখিত বিল্ট-ইন ফাংশনগুলি ব্যবহার করুন।

  • অন্তর্নির্মিত ফাংশন (যেমন প্রোগ্রামিং ভাষায়)bin(),oct(),hex()
  • স্ট্রিং পদ্ধতিstr.format(), অন্তর্নির্মিত ফাংশনformat(), চ স্ট্রিং

এই বিভাগটি আরও ব্যাখ্যা করে যে কীভাবে নেতিবাচক মানগুলির জন্য দুটি পরিপূরক বিন্যাসে একটি স্ট্রিং প্রকাশ করা যায়।

অন্তর্নির্মিত ফাংশন বিন (), অক্টোবর (), হেক্স ()

নিম্নলিখিত বিল্ট-ইন ফাংশনগুলি সংখ্যাকে বাইনারি, অক্টাল এবং হেক্সাডেসিমেল স্ট্রিংগুলিতে রূপান্তর করতে পারে।

  • বাইনারি সংখ্যা:bin()
  • অক্টাল:oct()
  • হেক্সাডেসিমেল সংখ্যা:hex()

প্রতিটি নিম্নলিখিত উপসর্গ সহ একটি স্ট্রিং প্রদান করে

  • বাইনারি সংখ্যা:0b
  • অক্টাল:0o
  • হেক্সাডেসিমেল সংখ্যা:0x
i = 255

print(bin(i))
print(oct(i))
print(hex(i))
# 0b11111111
# 0o377
# 0xff

print(type(bin(i)))
print(type(oct(i)))
print(type(hex(i)))
# <class 'str'>
# <class 'str'>
# <class 'str'>

আপনার যদি উপসর্গের প্রয়োজন না হয়, তাহলে এর পিছনের স্ট্রিংটি বের করতে slice[2:] ব্যবহার করুন, অথবা পরবর্তী ব্যাখ্যা অনুযায়ী format() ব্যবহার করুন।

print(bin(i)[2:])
print(oct(i)[2:])
print(hex(i)[2:])
# 11111111
# 377
# ff

আপনি যদি এটিকে দশমিক স্ট্রিং এ রূপান্তর করতে চান তবে আপনি str() ব্যবহার করতে পারেন।

print(str(i))
# 255

print(type(str(i)))
# <class 'str'>

অন্তর্নির্মিত ফাংশন বিন্যাস(), স্ট্রিং পদ্ধতি str.format(), f স্ট্রিং

বিল্ট-ইন ফাংশন ফরম্যাট() এবং স্ট্রিং পদ্ধতি str.format() এবং f-স্ট্রিং সংখ্যাকে বাইনারি, অক্টাল এবং হেক্সাডেসিমেল স্ট্রিং-এ রূপান্তর করতে পারে।

নিম্নরূপ বিন্যাস() এর দ্বিতীয় আর্গুমেন্ট উল্লেখ করে, এটি যথাক্রমে বাইনারি, অক্টাল এবং হেক্সাডেসিমেল স্ট্রিং-এ রূপান্তরিত হতে পারে।

  • বাইনারি সংখ্যা:b
  • অক্টাল:o
  • হেক্সাডেসিমেল সংখ্যা:x
print(format(i, 'b'))
print(format(i, 'o'))
print(format(i, 'x'))
# 11111111
# 377
# ff

print(type(format(i, 'b')))
print(type(format(i, 'o')))
print(type(format(i, 'x')))
# <class 'str'>
# <class 'str'>
# <class 'str'>

আপনি যদি 0b,0o,0x প্রিফিক্স সহ একটি স্ট্রিং পেতে চান, তাহলে ফর্ম্যাটিং স্পেসিফিকেশন স্ট্রিংয়ে # যোগ করুন।

print(format(i, '#b'))
print(format(i, '#o'))
print(format(i, '#x'))
# 0b11111111
# 0o377
# 0xff

যেকোনো সংখ্যা দিয়ে 0 পূরণ করাও সম্ভব। উল্লেখ্য যে উপসর্গের জন্য অক্ষরের সংখ্যা (দুটি অক্ষর) একটি উপসর্গ দিয়ে শূন্য পূরণ করার সময়ও অবশ্যই বিবেচনা করা উচিত।

print(format(i, '08b'))
print(format(i, '08o'))
print(format(i, '08x'))
# 11111111
# 00000377
# 000000ff

print(format(i, '#010b'))
print(format(i, '#010o'))
print(format(i, '#010x'))
# 0b11111111
# 0o00000377
# 0x000000ff

স্ট্রিং পদ্ধতি str.format() রূপান্তরের জন্যও ব্যবহার করা যেতে পারে।

print('{:08b}'.format(i))
print('{:08o}'.format(i))
print('{:08x}'.format(i))
# 11111111
# 00000377
# 000000ff

Python 3.6 দিয়ে শুরু করে, আপনি f স্ট্রিংও ব্যবহার করতে পারেন।f'xxx'

print(f'{i:08b}')
print(f'{i:08o}')
print(f'{i:08x}')
# 11111111
# 00000377
# 000000ff

একটি ঋণাত্মক পূর্ণসংখ্যাকে দুইটির পরিপূরক বিন্যাসে একটি স্ট্রিংয়ে রূপান্তর করুন।

যখন একটি ঋণাত্মক পূর্ণসংখ্যা bin() বা ফরম্যাট() ব্যবহার করে বাইনারি বা হেক্সাডেসিমেল স্ট্রিং-এ রূপান্তরিত হয়, তখন পরম মানের একটি বিয়োগ চিহ্ন থাকবে।

x = -9

print(x)
print(bin(x))
# -9
# -0b1001

পাইথনে, ঋণাত্মক পূর্ণসংখ্যার উপর বিটওয়াইজ ক্রিয়াকলাপগুলিও দুটির পরিপূরক উপস্থাপনায় সঞ্চালিত হয়। অতএব, আপনি যদি দুটির পরিপূরক আকারে প্রকাশ করা একটি স্ট্রিং পেতে চান তবে আপনি একটি বিটওয়াইজ লজিক্যাল OR& নিম্নরূপ বিট সংখ্যার সর্বোচ্চ সংখ্যক প্রয়োজন।

  • 4bit:0b1111(=0xf)
  • 8bit:0xff
  • 16bit:0xffff
print(bin(x & 0xff))
print(format(x & 0xffff, 'x'))
# 0b11110111
# fff7

বাইনারি, অক্টাল এবং হেক্সাডেসিমেল নোটেশনে স্ট্রিংগুলিকে সংখ্যায় রূপান্তর করুন।

অন্তর্নির্মিত ফাংশন int()

বাইনারি, অক্টাল বা হেক্সাডেসিমেল নোটেশনে একটি স্ট্রিংকে একটি সংখ্যায় রূপান্তর করতে, বিল্ট-ইন ফাংশন int() ব্যবহার করুন।

int(স্ট্রিং, রেডিক্স) দিয়ে, বাইনারি, অক্টাল, হেক্সাডেসিমেল নোটেশন ইত্যাদিতে একটি স্ট্রিং স্ট্রকে রেডিক্সের উপর ভিত্তি করে একটি সংখ্যাসূচক int-এ রূপান্তর করা যেতে পারে। রেডিক্স বাদ দিলে সংখ্যাটিকে দশমিক হিসেবে গণ্য করা হয়।

print(int('10'))
print(int('10', 2))
print(int('10', 8))
print(int('10', 16))
# 10
# 2
# 8
# 16

print(type(int('10')))
print(type(int('10', 2)))
print(type(int('10', 8)))
print(type(int('10', 16)))
# <class 'int'>
# <class 'int'>
# <class 'int'>
# <class 'int'>

যদি রেডিক্স 0 তে সেট করা হয়, তাহলে নিম্নলিখিত স্ট্রিং উপসর্গের উপর ভিত্তি করে রূপান্তর করা হয়।

  • বাইনারি উপসর্গ:0bবা0B
  • অক্টাল উপসর্গ:0oবা0O
  • হেক্সাডেসিমেল উপসর্গ:0xবা0X
print(int('0b10', 0))
print(int('0o10', 0))
print(int('0x10', 0))
# 2
# 8
# 16

print(int('0B10', 0))
print(int('0O10', 0))
print(int('0X10', 0))
# 2
# 8
# 16

যদি ভিত্তি সংখ্যা 0 হয় এবং কোন উপসর্গ না থাকে তবে এটি দশমিক সংখ্যা হিসাবে রূপান্তরিত হবে, তবে মনে রাখবেন যে যদি শুরুতে (বাম দিকে) 0 দিয়ে পূর্ণ হয় তবে একটি ত্রুটি ঘটবে।

print(int('10', 0))
# 10

# print(int('010', 0))
# ValueError: invalid literal for int() with base 0: '010'

অন্যান্য ক্ষেত্রে, শূন্য-ভরা স্ট্রিংগুলিকে রূপান্তরিত করা যেতে পারে।

print(int('010'))
# 10

print(int('00ff', 16))
print(int('0x00ff', 0))
# 255
# 255

যদি নির্দিষ্ট রেডিক্স বা উপসর্গ দিয়ে স্ট্রিং রূপান্তর করা না যায়, একটি ত্রুটি ঘটে।

# print(int('ff', 2))
# ValueError: invalid literal for int() with base 2: 'ff'

# print(int('0a10', 0))
# ValueError: invalid literal for int() with base 0: '0a10'

# print(int('0bff', 0))
# ValueError: invalid literal for int() with base 0: '0bff'

আবেদনের উদাহরণ

বাইনারি স্ট্রিং পাটিগণিত

উদাহরণস্বরূপ, 0b উপসর্গ সহ বাইনারি স্বরলিপিতে একটি স্ট্রিংয়ের উপর একটি অপারেশন সম্পাদন করা।

আপনি সহজেই এটিকে একটি সাংখ্যিক মান (পূর্ণসংখ্যা টাইপ int) এ রূপান্তর করতে পারেন, এটিতে অপারেশন করতে পারেন এবং তারপরে এটিকে আবার একটি স্ট্রিং স্ট্রে রূপান্তর করতে পারেন।

a = '0b1001'
b = '0b0011'

c = int(a, 0) + int(b, 0)

print(c)
print(bin(c))
# 12
# 0b1100

বাইনারি, অক্টাল এবং হেক্সাডেসিমেল সংখ্যার মধ্যে রূপান্তর করুন

বাইনারি, অক্টাল এবং হেক্সাডেসিমেল স্ট্রিং একে অপরের সাথে রূপান্তর করাও সহজ। একবার একটি সাংখ্যিক int-এ রূপান্তরিত হলে, এটি যেকোনো বিন্যাসের একটি স্ট্রিং-এ রূপান্তরিত হতে পারে।

জিরো-ফিলিং, প্রিফিক্সিং ইত্যাদি ফর্ম্যাটিং স্পেসিফিকেশন স্ট্রিং দ্বারা নিয়ন্ত্রণ করা যেতে পারে।

a_0b = '0b1110001010011'

print(format(int(a, 0), '#010x'))
# 0x00000009

print(format(int(a, 0), '#010o'))
# 0o00000011