Python Tutorial 10: Base Conversion in Bengali

পাইথনের জাদুকরী ফাংশন: এক নিমিষে সংখ্যা পদ্ধতির রূপান্তর

পাইথনের জাদুকরী ফাংশন: এক নিমিষে সংখ্যা পদ্ধতির রূপান্তর

আমরা দৈনন্দিন জীবনে দশমিক (Decimal) সংখ্যা ব্যবহার করি, কিন্তু কম্পিউটার বোঝে বাইনারি (Binary)। কখনো কি ভেবেছেন, আমাদের পরিচিত একটি সংখ্যাকে সরাসরি পাইথন কোডের মাধ্যমে বাইনারি, অক্টাল বা হেক্সাডেসিমেল-এ কীভাবে রূপান্তর করা যায়? এর জন্য কি জটিল কোনো অ্যালগরিদম লিখতে হবে?

একদমই না! পাইথনের কাছে এর জন্যেও রয়েছে কিছু চমৎকার এবং শক্তিশালী বিল্ট-ইন ফাংশন, যা এক নিমিষেই এই কাজ করে দিতে পারে। আজকের পোস্টে আমরা সেই জাদুকরী বেস কনভার্সন ফাংশনগুলো সম্পর্কেই জানব।

শুরুর আগে: সংখ্যা পদ্ধতির রিক্যাপ

আমরা জানি, প্রধানত চারটি সংখ্যা পদ্ধতি নিয়ে কাজ করা হয়:

  • Decimal (Base-10): অঙ্ক 0-9
  • Binary (Base-2): অঙ্ক 0, 1। পাইথনে উপসর্গ: 0b
  • Octal (Base-8): অঙ্ক 0-7। পাইথনে উপসর্গ: 0o
  • Hexadecimal (Base-16): অঙ্ক 0-9 এবং অক্ষর A-F। পাইথনে উপসর্গ: 0x

পাইথনের তিনটি বেস কনভার্সন ফাংশন

পাইথনে তিনটি প্রধান বেস কনভার্সন ফাংশন রয়েছে:

  1. bin(): একটি ডেসিমেল সংখ্যাকে তার সমতুল্য বাইনারি রূপে প্রকাশ করে।
  2. oct(): একটি ডেসিমেল সংখ্যাকে তার সমতুল্য অক্টাল রূপে প্রকাশ করে।
  3. hex(): একটি ডেসিমেল সংখ্যাকে তার সমতুল্য হেক্সাডেসিমেল রূপে প্রকাশ করে।

সবচেয়ে গুরুত্বপূর্ণ দুটি বিষয়:

  • ইনপুট: এই ফাংশনগুলো ইনপুট হিসেবে একটি Integer (পূর্ণসংখ্যা) নেয়।
  • আউটপুট: এরা ফলাফল হিসেবে একটি String (স্ট্রিং) রিটার্ন করে, যা সঠিক উপসর্গ (0b, 0o, বা 0x) সহ আসে।

চলুন, হাতে-কলমে দেখি

ধরা যাক, আমরা ডেসিমেল সংখ্যা 29-কে অন্য তিনটি পদ্ধতিতে রূপান্তর করতে চাই।

# আমাদের ডেসিমেল সংখ্যা
decimal_number = 29

# ফাংশনগুলো ব্যবহার করে রূপান্তর
binary_string = bin(decimal_number)
octal_string = oct(decimal_number)
hex_string = hex(decimal_number)

print(f"{decimal_number} এর বাইনারি রূপ: {binary_string}")
print(f"{decimal_number} এর অক্টাল রূপ: {octal_string}")
print(f"{decimal_number} এর হেক্সাডেসিমেল রূপ: {hex_string}")

# আউটপুটের টাইপ পরীক্ষা করা যাক
print(f"বাইনারি রূপের ডেটা টাইপ: {type(binary_string)}")

আউটপুট:

29 এর বাইনারি রূপ: 0b11101
29 এর অক্টাল রূপ: 0o35
29 এর হেক্সাডেসিমেল রূপ: 0x1d
বাইনারি রূপের ডেটা টাইপ: <class 'str'>

ফাংশনগুলোর সীমাবদ্ধতা: কী করা যাবে এবং কী যাবে না?

এই ফাংশনগুলো কি সব ধরণের ডেটার উপর কাজ করে? চলুন পরীক্ষা করি।

  • Boolean মানের ক্ষেত্রে?

    হ্যাঁ! আমরা জানি True মানে 1 এবং False মানে 0। তাই এই ফাংশনগুলো বুলিয়ান মানের উপর কাজ করে।

    print(bin(True))  # আউটপুট: 0b1
    print(oct(False)) # আউটপুট: 0o0
  • Float বা দশমিক সংখ্যার ক্ষেত্রে?

    না! এই ফাংশনগুলো শুধুমাত্র পূর্ণসংখ্যার জন্য ডিজাইন করা হয়েছে। আপনি যদি একটি দশমিক সংখ্যা ইনপুট দেন, তাহলে পাইথন একটি TypeError দেখাবে।

    # নিচের কোডটি এরর দেবে
    # bin(29.5)
    # TypeError: 'float' object cannot be interpreted as an integer

উপসংহার

পাইথনের bin(), oct(), এবং hex() ফাংশনগুলো সংখ্যা পদ্ধতির রূপান্তরকে অত্যন্ত সহজ করে দিয়েছে। যদিও সাধারণ অ্যাপ্লিকেশন ডেভেলপমেন্টে এগুলোর ব্যবহার কম, কিন্তু যখনই আপনি নেটওয়ার্কিং, ডেটা কম্প্রেশন, বা হার্ডওয়্যার-লেভেল প্রোগ্রামিং নিয়ে কাজ করবেন, তখনই এই ফাংশনগুলো আপনার অমূল্য সঙ্গী হয়ে উঠবে।

এই ফাংশনগুলোর অস্তিত্ব জানা থাকাটাই একজন প্রোগ্রামার হিসেবে আপনাকে এক ধাপ এগিয়ে রাখবে। তাই, বিভিন্ন সংখ্যা নিয়ে অনুশীলন করুন এবং এদের কার্যকারিতা দেখুন।