সমস্যা
C প্রোগ্রামিং ভাষা ব্যবহার করে হেক্সাডেসিমাল ভ্যালুকে ইন্টিজার ভ্যালুতে রূপান্তর করার পদ্ধতি। কনসেপ্টটি ব্যাখ্যা করুন।
সমাধান
হেক্সাডেসিমাল ভ্যালু ১৬ সিম্বলে প্রকাশ করা হয় ১ থেকে ৯ এবং A থেকে F। এখানে A থেকে F-এর দশমিক সমতুল্য ১০ থেকে ১৫।
উদাহরণ
ফাংশন ব্যবহার করে হেক্সাডেসিমাল থেকে ইন্টিজার রূপান্তরের C প্রোগ্রাম নিচে দেওয়া হল:
#include#include #include int hextodc(char *hex){ int y = 0; int dec = 0; int x, i; for(i = strlen(hex) - 1; i >= 0; --i){ if(hex[i] >= '0' && hex[i] <= '9'){ x = hex[i] - '0'; } else{ x = hex[i] - 'A' + 10; } dec = dec + x * pow(16, y); // হেক্সাডেসিমাল থেকে ইন্টিজার রূপান্তর ++y; } return dec; } int main(){ char hex[100]; printf("হেক্সাডেসিমাল লিখুন: "); scanf("%s", hex); printf("\nডেসিমাল: %d", hextodc(hex)); return 0; }
আউটপুট
উপরের প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যাবে:
১. হেক্সাডেসিমাল লিখুন: A ডেসিমাল: ১০ ২. হেক্সাডেসিমাল লিখুন: A12 ডেসিমাল: ২৫৭৮
ব্যাখ্যা
হেক্স-এর সব ক্যারেক্টার راয়ট-টু-লেফট স্ক্যান করুন।
স্ক্যান করা ক্যারেক্টার হোক A।
A কে উপযুক্ত দশমিক ফর্মে রূপান্তর করে x-এ সংরক্ষণ করুন।
dec = dec + x * 16^y
y = y + 1।
দশমিক রিটার্ন করুন।
আমরা লেফট-টু-রাইট থেকেও হেক্সাডেসিমাল স্ক্যান করতে পারি কিন্তু, y = N - ১ হিসেবে ইনিশিয়ালাইজ করতে হবে এবং প্রতিটি ইটারেশনে y ডিক্রিমেন্ট করতে হবে। N হল হেক্সাডেসিমালের দৈর্ঘ্য।