Base conversion কীভাবে কাজ করে
প্রতিটি positional numeral system একটি মানকে base-এর power দ্বারা গুণিত digit-এর সমষ্টি হিসেবে উপস্থাপন করে। Base পরিবর্তন করা মানে একটি ভিন্ন power series-এর বিরুদ্ধে একই মান পুনর্লিখন করা।
- Input alphabet validate করুন. প্রতিটি base একটি নির্দিষ্ট digit set গ্রহণ করে। Binary 0 ও 1 গ্রহণ করে; octal 0-7; decimal 0-9; hex 0-9 এবং A-F। বেছে নেওয়া alphabet-এর বাইরের character কোনো conversion চলার আগেই inline error হিসেবে দেখায়।
- মান parse করুন. JavaScript Number-এ fit করা মানের জন্য (2^53-1 পর্যন্ত) টুলটি
parseInt(text, base)কল করে। সেই সীমার উপরে এটিBigInt-এ fall back করে যাতে arbitrarily বড় integer-এর জন্য conversion exact থাকে। - প্রতিটি target base-এ re-render করুন. Parsed মান
Number.prototype.toString(base)বাBigInt.prototype.toString(base)-এর মাধ্যমে প্রতিটি output base-এ রূপান্তরিত হয়। চারটি standard pane (binary, octal, decimal, hex) এবং custom-base pane একসাথে আপডেট হয়। - Formatting প্রয়োগ করুন. Prefix toggle binary, octal, এবং hex আউটপুটের সামনে 0b, 0o, বা 0x যোগ করে। Digit grouping প্রতি চারটি binary digit এবং প্রতি দুটি hex digit-এর পরে underscore ঢোকায়। Hex case toggle A-F-এর জন্য বড় বা ছোট হাতের অক্ষর বেছে নেয়।
- লাইভ cross-pane sync. যেকোনো pane সম্পাদনা করলে 100 ms debounced re-conversion ট্রিগার হয় যা অন্য pane আপডেট করে। আপনি যে pane-এ টাইপ করছেন সেটি প্রতিটি keystroke-এ truth-এর source হিসেবে treated হয়।
Base converter কেন ব্যবহার করবেন
- Memory dump পড়া. Debugger, disassembler, এবং core-dump viewer address ও register মান hex-এ দেখায়। সেগুলো decimal-এ রূপান্তর করলে একই trace-এ অন্যত্র reported count, size, ও offset-এর সাথে তুলনীয় হয়।
- Color code নিয়ে কাজ. CSS, design tool, এবং image format #d2511a-এর মতো hex triplet-এ color লেখে। প্রতিটি pair decimal-এ রূপান্তর করলে একই color আপনার color picker বা accessibility checker-এর প্রত্যাশিত rgb(210, 81, 26) form-এ পরিণত হয়।
- File permission decode করা. Unix chmod মান octal-এ লেখা হয়: 755 মানে rwxr-xr-x যখন প্রতিটি octal digit তার তিনটি binary bit-এ অনুবাদ করা হয়। Converter সেই mapping এক ধাপে দেখায় যাতে man page খোলা ছাড়াই permission set পরীক্ষা করা যায়।
- Bit flag debug করা. Network protocol, kernel syscall, এবং hardware register অনেক boolean flag একটি integer-এ pack করে। Binary-তে integer পড়লে একনজরে দেখা যায় কোন bit set আছে, যা দরকার যখন কোনো flag কেন কার্যকর হচ্ছে না তা খুঁজছেন।
সাধারণ প্রয়োগ
Base conversion developer, security, এবং hardware কাজে প্রতিদিন দেখা যায় যখনই একটি সংখ্যা শুধু একটি count-এর বেশি কিছু।
- Embedded firmware: JTAG probe থেকে hex dump পড়া, একটি function-এর address খুঁজে বের করা, এবং আপনার debugger script গ্রহণকারী decimal offset ব্যবহার করে breakpoint command লেখা।
- Network security: dotted-decimal-এ printed 32-bit netmask binary-তে parse করে prefix length গণনা করা, তারপর ACL rule-এর জন্য CIDR form লেখা।
- CTF puzzle ও crypto challenge: XOR-এর অধীনে candidate plaintext-এর বিরুদ্ধে leaked key fragment তুলনা করার সময় hex, decimal, ও binary-এর মধ্যে যাতায়াত করা।
একটি ব্যবহারিক উদাহরণ
Decimal pane-এ 255 টাইপ করুন। hex pane FF-এ (prefix toggle চালু থাকলে 0xFF) আপডেট হয়, binary pane 11111111-এ (grouped হলে 1111_1111), এবং octal pane 377-এ। custom-pane radix 36-এ সেট করুন এবং একই মান 73 হিসেবে render হয়। Decimal pane-এ 123456789012345678901234567890-এর মতো অনেক বড় মান টাইপ করুন; hex pane BigInt path ব্যবহার করে 18EE90FF6C373E0EE4E3F0AD2 render করে।
FAQ
Number base কী?
Number base, বা radix, হলো একটি positional system পরবর্তী অবস্থানে carry করার আগে কতটি আলাদা digit ব্যবহার করে। Decimal (base 10) 0-9 ব্যবহার করে; binary (base 2) শুধু 0 ও 1; hexadecimal (base 16) 0-9 plus A-F। Base পরিবর্তন করলে সংখ্যার মান পরিবর্তন হয় না — শুধু digit কীভাবে লেখা ও গ্রুপ করা হয় তা পরিবর্তন হয়।
Programming-এ hexadecimal কেন ব্যবহার করা হয়?
এক hex digit ঠিক চারটি binary bit-এ map হয়, তাই দুটি hex digit একটি byte এবং আটটি hex digit একটি 32-bit word কভার করে। এটি memory address, register বিষয়বস্তু, color triplet, এবং cryptographic key-এর জন্য hex-কে সবচেয়ে compact human-readable form করে। 0xFF পড়া 11111111 পড়ার চেয়ে দ্রুত, এবং প্রয়োজন হলে bit pattern সেখানেই আছে।
আমি কি base 36-এর বেশি রূপান্তর করতে পারি?
এই টুল base 36-এ থামে কারণ এটি native JavaScript parseInt ও toString API-এর উপরের সীমা, যা digit alphabet হিসেবে 0-9 এবং A-Z গ্রহণ করে। Base 37-62 custom alphabet দিয়ে সম্ভব (Bitcoin address-এ ব্যবহৃত Base58 একটি উদাহরণ) কিন্তু এগুলো আলাদা টুল হিসেবে tracked কারণ প্রতিটি উচ্চতর base-এর নিজস্ব canonical digit ordering প্রয়োজন।
এটি কি negative number ও float handle করে?
Negative integer প্রতিটি base-এ leading minus sign সহ render হয়, যা Number.prototype.toString-এর আচরণের সাথে একই। বেছে নেওয়া bit width (8, 16, 32, 64) জুড়ে two's-complement representation একটি আলাদা view যা যোগ করার পরিকল্পনা আছে। Floating-point base conversion এই version-এর scope-এর বাইরে; টুলটি শুধুমাত্র integer মান handle করে।
Base conversion হলো firmware, security, এবং graphics কাজে বারবার আসা একটি ছোট কাজ। ব্রাউজার ট্যাবে করা, Node ও V8 ইতিমধ্যে যে arithmetic primitive ship করে তা দিয়ে, কাজটি দ্রুত রাখে এবং ডেটা আপনার মেশিনে।