ASCII টেবিল
নতুনদশমিক, hex, অক্টাল ও বাইনারিতে অনুসন্ধানযোগ্য অক্ষর কোড।
Text ↔ ASCII converter
| Char | Dec | Hex | Oct | Binary | HTML | Name |
|---|
No characters match your filters.
Runs entirely in your browser. Nothing is uploaded.
ASCII টেবিল কী?
একটি ASCII টেবিল হলো একটি সম্পূর্ণ ক্যারেক্টার কোড চার্ট যা প্রতিটি অক্ষর, সংখ্যা, বিরাম চিহ্ন, স্পেস এবং কন্ট্রোল সিগন্যালকে ০ থেকে ১২৭-এর মধ্যে একটি অনন্য সংখ্যার সাথে ম্যাপ করে। ASCII — American Standard Code for Information Interchange — ১৯৬৩ সালে প্রকাশিত হয়েছিল এবং এখনও প্রায় প্রতিটি আধুনিক টেক্সট এনকোডিং, UTF-8 সহ, যার ভিত্তির ওপর তৈরি হয়েছে। এই ASCII কোড টেবিল প্রতিটি অক্ষরকে তার ডেসিমেল, হেক্সাডেসিমেল, অক্টাল এবং বাইনারি মানের পাশাপাশি তালিকাভুক্ত করে, সাথে HTML এন্টিটি এবং ইউনিকোড কোড পয়েন্ট, যাতে আপনি দেখতে পারেন যেকোনো অক্ষর ঠিক কীভাবে বাইট-স্তরে প্রতিনিধিত্ব করা হয়।
যেহেতু পুরো টেবিলটি পেজেই বিল্ট-ইন এবং সম্পূর্ণভাবে আপনার ব্রাউজারে চলে, এটি তাৎক্ষণিকভাবে লোড হয়, অফলাইনে কাজ করে এবং আপনি যা টাইপ করেন তা কখনও আপলোড করে না। এটি ডেভেলপার, শিক্ষার্থী, এমবেডেড ইঞ্জিনিয়ার এবং কম্পিউটার কীভাবে টেক্সট সংরক্ষণ ও প্রেরণ করে তা শিখতে চাওয়া যেকোনো ব্যক্তির জন্য একটি দ্রুত, প্রাইভেট, ইন্টারঅ্যাক্টিভ রেফারেন্স — এবং এটি asciitable.com বা w3schools-এর মতো সাইটের স্ট্যাটিক PDF এবং নন-ইন্টারঅ্যাক্টিভ পেজকে ছাড়িয়ে যায় কারণ আপনি যেকোনো মান কপি করতে ক্লিক করতে পারেন এবং একসাথে নাম, ডেসিমেল, হেক্স বা বাইনারি দিয়ে সার্চ করতে পারেন।
ASCII টেবিল কীভাবে পড়ব
প্রতিটি সারি একটি অক্ষর প্রতিনিধিত্ব করে। ASCII টেবিল পড়তে, Char কলামে আপনার চাওয়া চিহ্নটি খুঁজুন এবং চারটি ভিন্ন বেসে এর সংখ্যা দেখতে জুড়ে স্ক্যান করুন: ডেসিমেল (দৈনন্দিন মান, যেমন ৬৫), হেক্সাডেসিমেল (0x41), অক্টাল (101) এবং বাইনারি (01000001)। Name কলাম নন-প্রিন্টিং এন্ট্রি ব্যাখ্যা করে — উদাহরণস্বরূপ কোড ৯ হলো TAB, কোড ১০ হলো LF (লাইন ফিড) এবং কোড ১৩ হলো CR (ক্যারেজ রিটার্ন)। ফাইল পার্স করা, এস্কেপ সিকোয়েন্স লেখা এবং টার্মিনাল আউটপুট ডিবাগ করার জন্য এই কন্ট্রোল ক্যারেক্টার কোডগুলো জানা অপরিহার্য।
প্রথম ৩২টি কোড (০-৩১) প্লাস ১২৭ হলো কন্ট্রোল ক্যারেক্টার: অদৃশ্য সিগন্যাল যা টেক্সট ফরম্যাট করে বা দৃশ্যমান গ্লিফ প্রিন্ট করার বদলে ডিভাইস নিয়ন্ত্রণ করে। কোড ৩২-১২৬ হলো প্রিন্টেবল অক্ষর — স্পেস, সংখ্যা ০-৯, বড় হাতের A-Z (৬৫-৯০), ছোট হাতের a-z (৯৭-১২২) এবং সাধারণ বিরাম চিহ্ন। কয়েকটি অ্যাংকর পয়েন্ট মুখস্থ করা (A=৬৫, a=৯৭, 0=৪৮, স্পেস=৩২) বাকি চার্টটি মানসিকভাবে নেভিগেট করার জন্য যথেষ্ট। Python-এ, ord('A') ৬৫ ফিরিয়ে দেয় এবং chr(65) 'A' ফিরিয়ে দেয়; C-তে, একটি char-কে int-এ কাস্ট করলে সরাসরি কোড পাওয়া যায়।
ASCII টেবিলে কতগুলো অক্ষর আছে?
স্ট্যান্ডার্ড ASCII ঠিক ১২৮টি অক্ষর সংজ্ঞায়িত করে, ০ থেকে ১২৭ পর্যন্ত সংখ্যায়িত, কারণ এটি একটি ৭-বিট কোড (2⁷ = ১২৮)। প্রায়ই উল্লেখিত ২৫৬টি অক্ষরের সংখ্যাটি এক্সটেন্ডেড ASCII-কে বোঝায়, যা কোড ১২৮-২৫৫ যোগ করতে একটি বাইটের সম্পূর্ণ ৮ম বিট ব্যবহার করে। এই অতিরিক্ত স্লটগুলো মূল ASCII স্ট্যান্ডার্ডের অংশ নয় এবং এর অর্থ কোড পেজের ওপর নির্ভর করে; সবচেয়ে সাধারণ ম্যাপিং হলো Latin-1 (ISO-8859-1), যা উচ্চারণচিহ্নযুক্ত অক্ষর এবং পশ্চিম-ইউরোপীয় প্রতীক দেয়। মানসম্মত ১২৮-অক্ষরের সেট এবং Latin-1 ম্যাপিংসহ সম্পূর্ণ ২৫৬-অক্ষরের ভিউয়ের মধ্যে সুইচ করতে Show extended টগল করুন — যা স্ট্যাটিক চার্টে পাওয়া যায় না।
ASCII টেবিল কীভাবে কাজ করে?
কম্পিউটার শুধু সংখ্যা সংরক্ষণ করে, তাই ASCII টেক্সটকে একটি সংখ্যা দেয়। ASCII টেবিল প্রতিটি অক্ষরকে একটি স্থির কোড বরাদ্দ করে যা একটি একক বাইটে ফিট করে এভাবে কাজ করে। 'Hi' শব্দটি দুটি বাইট হিসেবে সংরক্ষিত হয়, ৭২ এবং ১০৫। আপনি যখন একটি কী চাপেন, আপনার কীবোর্ড সেই কোডটি অপারেটিং সিস্টেমে পাঠায়; যখন সফটওয়্যার স্ক্রিনে টেক্সট আঁকে, এটি কোডটি পড়ে এবং মিলে যাওয়া গ্লিফ রেন্ডার করে। ডেটা ফাইল পার্স করার সময়, টার্মিনালের জন্য এস্কেপ সিকোয়েন্স লেখার সময়, ক্যারেক্টার এনকোডিং সমস্যা ডিবাগ করার সময়, বা কোর্সওয়ার্কে সংখ্যার বেসের মধ্যে রূপান্তর করার সময় কোডগুলো জানা অপরিহার্য।
ASCII এমনভাবে ডিজাইন করা হয়েছিল যাতে অক্ষরগুলো গাণিতিকভাবে পরিবর্তন করা যায়। বড় হাতের A-Z শুরু হয় ৬৫ থেকে এবং ছোট হাতের a-z শুরু হয় ৯৭ থেকে, তাই আপনি ৩২ যোগ বা বিয়োগ করে যেকোনো অক্ষরকে কেসের মধ্যে রূপান্তর করতে পারেন — C এবং অ্যাসেম্বলিতে একটি সাধারণ বিট-ম্যানিপুলেশন কৌশল। একইভাবে, ডিজিট ক্যারেক্টার '০'-'৯' শুরু হয় ৪৮ থেকে, তাই একটি ডিজিট ক্যারেক্টারের কোড থেকে ৪৮ বিয়োগ করলে এটি প্রতিনিধিত্ব করা পূর্ণসংখ্যা মান পাওয়া যায়। এই গাণিতিক সুরুচি একটি ইচ্ছাকৃত ডিজাইন পছন্দ যা প্রাথমিক ৮-বিট হার্ডওয়্যারেও ASCII-ভিত্তিক প্রোগ্রামিংকে দক্ষ করে তুলেছিল।
কেন এই ASCII টেবিল asciitable.com এবং w3schools-কে ছাড়িয়ে যায়
বেশিরভাগ অনলাইন ASCII রেফারেন্স চার্ট asciitable.com বা w3schools.com-এর মতো সাইটের স্ট্যাটিক ছবি বা PDF — আপনি এগুলো সার্চ করতে পারবেন না, একটি মান কপি করতে ক্লিক করতে পারবেন না, এবং এতে টেক্সট-টু-ASCII কনভার্টার নেই। Asciitable.com একটি ছোট ফন্টে একটি স্থির টেবিল দেয়, কোনো ইন্টারঅ্যাক্টিভিটি ছাড়াই। W3schools একটি মৌলিক HTML টেবিল দেয় কিন্তু ক্লিক-টু-কপি, লাইভ সার্চ বা একটি বিল্ট-ইন টেক্সট কনভার্টারও বাদ। উভয়েরই আপনার প্রয়োজনীয় জিনিস খুঁজতে সারিগুলো দৃশ্যত স্ক্যান করতে হয়।
এই ইন্টারঅ্যাক্টিভ টুলটি আপনাকে ক্যারেক্টার নাম, ডেসিমেল মান, হেক্স কোড বা বাইনারি প্যাটার্ন দিয়ে সার্চ করতে দেয় — 'space', '32', '0x20', বা '00100000' টাইপ করুন আর এটি সরাসরি সঠিক সারিতে চলে যায়। যেকোনো মান তাৎক্ষণিকভাবে ক্লিপবোর্ডে কপি করতে ক্লিক করুন। বিল্ট-ইন দুই-দিকের কনভার্টারটি এমন একটি ফিচার যা কোনো স্ট্যাটিক চার্ট মেলাতে পারে না: যেকোনো টেক্সট পেস্ট করে ডেসিমেল, হেক্স বা বাইনারিতে এর ASCII কোড পান, অথবা কোডের একটি তালিকা পেস্ট করে সেগুলোকে আবার টেক্সটে রূপান্তর করুন। এনকোডিং সমস্যা ডিবাগ করা ডেভেলপার, কম্পিউটার সায়েন্সের অ্যাসাইনমেন্ট শেষ করা শিক্ষার্থী এবং সিরিয়াল প্রোটোকল নিয়ে কাজ করা ইঞ্জিনিয়ার — সবাই একই তাৎক্ষণিক, প্রাইভেট, বিজ্ঞাপনহীন অভিজ্ঞতা পান — কোনো সাইনআপ ছাড়াই এবং তাদের ডিভাইস থেকে কিছু না বেরিয়ে।
ASCII স্ট্যান্ডার্ড এবং এর ইতিহাস
ASCII আনুষ্ঠানিকভাবে ১৯৬৩ সালে American Standards Association (ASA, পরে ANSI নামকরণ করা হয়) দ্বারা প্রকাশিত হয়েছিল, বিভিন্ন কম্পিউটার এবং টেলিটাইপ প্রস্তুতকারক প্রতিটি স্বাধীনভাবে উদ্ভাবিত অসামঞ্জস্যপূর্ণ ক্যারেক্টার সেট একত্রিত করার একটি কমিটির প্রচেষ্টার ফলাফল হিসেবে। ASCII-এর আগে, IBM মেইনফ্রেম, Burroughs মেশিন এবং Teletype টার্মিনাল সবাই ভিন্ন ভিন্ন ক্যারেক্টার কোড বলত, যা সিস্টেমের মধ্যে ডেটা বিনিময়কে অনির্ভরযোগ্য ও ব্যয়বহুল করে তুলত। ১৯৬৩ সংস্করণে ছোট হাতের অক্ষর ছিল না; ১৯৬৭ সালের একটি উল্লেখযোগ্য সংশোধন সম্পূর্ণ ছোট হাতের বর্ণমালা যোগ করেছিল, ১২৮-অক্ষরের সেট তৈরি করেছিল যা প্রতিটি প্রোগ্রামার আজও দেখতে পান। Bell Labs এবং AT&T মানকীকরণ প্রক্রিয়ায় গভীরভাবে প্রভাবশালী ছিল — AT&T-এর দেশব্যাপী টেলিফোন নেটওয়ার্ক সেই যুগের বেশিরভাগ কম্পিউটার-থেকে-কম্পিউটার যোগাযোগের মেরুদণ্ড ছিল, এবং Bell ইঞ্জিনিয়াররা যেকোনো প্রকৃত-বিশ্ব লাইন নয়েজে টিকে থাকার জন্য একটি সাধারণ বিট-সিরিয়াল ক্যারেক্টার সেটের কী প্রয়োজন ছিল তা যে কারও চেয়ে ভালো বুঝত।
৭ বিট (১২৮টি কোড পয়েন্ট দেয়) বেছে নেওয়াটি স্বেচ্ছাচারী ছিল না, ছিল ইচ্ছাকৃত। প্রাথমিক মডেম এবং সিরিয়াল লিংক নিয়মিতভাবে প্রতিটি বাইটের ৮ম বিটকে প্যারিটি বিট হিসেবে ব্যবহার করত — একটি এরর-চেকিং মেকানিজম যা উচ্চ বিট সেট করে যাতে প্রতিটি বাইটে ১-বিটের মোট সংখ্যা সবসময় বিজোড় (বা সবসময় জোড়) থাকে, যা রিসিভারকে একক-বিট ট্রান্সমিশন এরর শনাক্ত করতে দেয়। প্যারিটির জন্য বিট ৭ সংরক্ষণ করার মানে ASCII অক্ষরকে বাকি সাত বিটে ফিট করতে হয়েছিল। যখন এরর-কারেকশন ডেডিকেটেড হার্ডওয়্যার এবং প্রোটোকল লেয়ারে চলে গেল, ৮ম বিট মুক্ত হয়ে গেল — এক্সটেন্ডেড ASCII এবং শেষপর্যন্ত ইউনিকোডের দ্বার খুলে দিল। সেই ব্যবহারিক পছন্দের দীর্ঘমেয়াদী উত্তরাধিকার UTF-8-এ দৃশ্যমান: এর ডিজাইনাররা নিশ্চিত করেছিল যে যেকোনো ASCII বাইট (উচ্চ বিট পরিষ্কার) UTF-8-এ একইভাবে ব্যাখ্যা করা হয়, পুরো ৬০-বছরের পুরনো ASCII কর্পাসকে কোনো রূপান্তর ছাড়াই বৈধ UTF-8 বানিয়ে দেয়।
সেই ব্যাকওয়ার্ড কম্প্যাটিবিলিটি একটি কাকতালীয় ঘটনা নয় — এটাই মূল কারণ UTF-8 ইন্টারনেটে প্রতিটি প্রতিদ্বন্দ্বী ইউনিকোড এনকোডিংকে সরিয়ে দিয়েছে। ১৯৭১ সালে একটি PDP-11-এ লেখা একটি ASCII প্লেইন-টেক্সট ফাইল আজও বৈধ UTF-8। ওয়েব সার্ভার, JSON পার্সার, XML প্রসেসর এবং কার্যত প্রতিটি নেটওয়ার্ক প্রোটোকল ধরে নেয় যে কোড পয়েন্ট ০-১২৭ হলো ASCII। তাই মূল ১২৮-অক্ষরের টেবিল বোঝা একটি মৌলিক দক্ষতা হয়ে থাকে, আপনি কখনও লিগ্যাসি সিস্টেমে কাজ করেন কিনা তা নির্বিশেষে, কারণ এটি প্রতিষ্ঠিত কাঠামো এর ওপর তৈরি প্রতিটি টেক্সট-প্রসেসিং অ্যাবস্ট্রাকশনকে আকার দেয়।
কন্ট্রোল ক্যারেক্টার (কোড ০-৩১) এবং মূলত এগুলো কী করত
প্রথম ৩২টি ASCII কোড হলো কন্ট্রোল ক্যারেক্টার — এগুলো কোনো দৃশ্যমান গ্লিফ প্রিন্ট করে না বরং ডেটা গ্রহণকারী ডিভাইসকে একটি কাজের সিগন্যাল দেয়। তাদের নাম এবং উদ্দেশ্য সরাসরি টেলিটাইপ মেশিন (যান্ত্রিক টার্মিনাল যা ক্রমাগত কাগজের রোলে প্রিন্ট করত) থেকে উত্তরাধিকারসূত্রে পাওয়া। NUL (০) টেলিটাইপ পেপার-টেপ সিস্টেমে যান্ত্রিক বিলম্বের জন্য একটি নো-অপারেশন প্যাডিং বাইট ছিল; C পরে এটিকে স্ট্রিং টার্মিনেটর হিসেবে পুনর্ব্যবহার করেছে যা প্রতিটি null-terminated ক্যারেক্টার অ্যারে শেষ করে। BEL (৭) আক্ষরিকভাবে টেলিটাইপে লাগানো একটি বাস্তব ঘণ্টা বাজাত অপারেটরকে সতর্ক করতে। BS (৮ — ব্যাকস্পেস) প্রিন্ট হেডকে এক পজিশন বামে সরাত যাতে জোর দেওয়ার জন্য একটি অক্ষর ওভারপ্রিন্ট করা যায়। HT (৯ — হরাইজন্টাল ট্যাব) ক্যারেজকে পরবর্তী প্রিসেট ট্যাব স্টপে এগিয়ে দিত, অনেকটা টাইপরাইটারের ট্যাব কীর মতো। LF (১০ — লাইন ফিড) ক্যারেজ না সরিয়ে কাগজকে এক লাইন এগিয়ে দিত, এবং CR (১৩ — ক্যারেজ রিটার্ন) কাগজ না এগিয়ে ক্যারেজকে সবচেয়ে বাম অবস্থানে ফিরিয়ে আনত।
CR এবং LF-এর মধ্যকার পার্থক্য আজও মাথাব্যথার কারণ হওয়া লাইন-এন্ডিং পার্থক্যগুলো ব্যাখ্যা করে। একটি টাইপরাইটারে, একটি লাইন শেষ করতে দুটি শারীরিক অপারেশন প্রয়োজন ছিল: ক্যারেজ ফিরিয়ে আনা (CR) এবং কাগজ এগিয়ে দেওয়া (LF)। প্রাথমিক সফটওয়্যার উভয় ধাপই সংরক্ষণ করেছিল, Windows-কে দিয়েছে তার CR+LF (\r\n) লাইন এন্ডিং। Unix ডিজাইনাররা সিদ্ধান্ত নিয়েছিলেন একটি একক LF যথেষ্ট এবং শুধু-LF (\n) গ্রহণ করেছিল, যখন পুরনো Mac OS শুধু-CR (\r) ব্যবহার করত। টেক্সট ফাইল বিভিন্ন অপারেটিং সিস্টেম জুড়ে গেলে, এই পার্থক্যগুলো স্ক্রিপ্ট ব্যর্থ করতে পারে, বাইনারি ফাইল তুলনা নষ্ট করতে পারে এবং লাইন-কাউন্ট টুলে হোঁচট খাওয়াতে পারে — সবকিছুই ১৯৬০-এর দশকের টেলিটাইপ হার্ডওয়্যারের যান্ত্রিক বাস্তবতায় ফিরে যেতে পারে।
ESC (২৭) সহজভাবে একটি এস্কেপ ক্যারেক্টার হিসেবে সংজ্ঞায়িত করা হয়েছিল — একটি প্রিফিক্স যা সংকেত দেয় যে এর পরবর্তী বাইটগুলোকে প্রিন্টেবল টেক্সটের বদলে একটি কমান্ড হিসেবে ব্যাখ্যা করা উচিত। এটাই ANSI এস্কেপ সিকোয়েন্সের ভিত্তি, যে কোডগুলো টার্মিনাল এমুলেটর এখনও টেক্সট রঙ সেট করতে, কার্সার সরাতে, স্ক্রিন পরিষ্কার করতে এবং আরও শত শত অপারেশনের জন্য ব্যবহার করে। ESC-এর সাথে একটি '[' প্রিফিক্স করুন এবং সাংখ্যিক প্যারামিটার দিয়ে ফলো করুন \033[31m (লাল টেক্সট) বা \033[2J (স্ক্রিন পরিষ্কার)-এর মতো সিকোয়েন্স তৈরি করতে। সবশেষে, DEL (১২৭) ৭-বিট রেঞ্জের একদম শেষে বসে, কন্ট্রোল ব্লকে নয়, কিন্তু এটি একটির মতো আচরণ করে: পেপার টেপে, সাতটি হোল পাঞ্চ করে একটি ভুল মুছে ফেলা যেত, প্রতিটি বিট ১-এ সেট করে — যা ১২৭-এর বিট প্যাটার্ন। অনেক Unix সিস্টেম এখনও ব্যাকস্পেস কীকে BS (৮)-এর বদলে DEL (১২৭)-এ ম্যাপ করে, একটি প্রথা যা টার্মিনাল থেকে উত্তরাধিকারসূত্রে পাওয়া যা DEL-কে ধ্বংসাত্মক-মুছে-ফেলার ক্যারেক্টার হিসেবে গণ্য করত।
প্রিন্টেবল ASCII (কোড ৩২-১২৬) এবং এর গাণিতিক কাঠামো
৯৫টি প্রিন্টেবল ASCII অক্ষর কোড ৩২ থেকে ১২৬ দখল করে। কোড ৩২ হলো স্পেস অক্ষর — একমাত্র অদৃশ্য প্রিন্টেবল, এবং সবচেয়ে নিচু কোড যা একটি ফন্ট একটি ডিভাইস কমান্ডের বদলে একটি গ্লিফ হিসেবে রেন্ডার করে। বিরাম চিহ্ন তিনটি গুচ্ছে ছড়িয়ে আছে: কোড ৩৩-৪৭-এ থাকে ! " # $ % & ' ( ) * + , - . /, কোড ৫৮-৬৪-এ থাকে : ; < = > ? @, এবং কোড ৯১-৯৬ ও ১২৩-১২৬-এ থাকে ব্র্যাকেট জোড়া, ব্যাকস্ল্যাশ, ক্যারেট, আন্ডারস্কোর, ব্যাকটিক, পাইপ, টিল্ড এবং ব্রেস। সংখ্যা ০-৯ ম্যাপ হয় কোড ৪৮-৫৭-এ — এবং অফসেটটি পরিষ্কার: যেকোনো ডিজিট ক্যারেক্টারের কোড থেকে ৪৮ (হেক্স 0x30) বিয়োগ করলে আপনি সরাসরি পূর্ণসংখ্যা মান পান, যা ASCII-কে প্রাথমিক হার্ডওয়্যারে BCD (বাইনারি-কোডেড ডেসিমেল) গণিতের জন্য ভালোভাবে উপযুক্ত করে তুলেছিল। বড় হাতের A-Z চলে ৬৫ থেকে ৯০ পর্যন্ত এবং ছোট হাতের a-z চলে ৯৭ থেকে ১২২ পর্যন্ত, ঠিক ৩২-এর একটি ব্যবধান সহ।
উচ্চ এবং ছোট হাতের মধ্যকার সেই ৩২-এর ব্যবধান দুর্ঘটনাক্রমে নয় — এটি সরল বিটওয়াইজ কেস রূপান্তর সক্ষম করার একটি ইচ্ছাকৃত ডিজাইন পছন্দ। যেহেতু ৩২ একটি ২-এর ঘাত (2⁵), যেকোনো অক্ষরের বিট ৫ টগল করলে এর কেস উল্টে যায়। C-তে: c | 0x20 যেকোনো বড় হাতের ASCII অক্ষরকে ছোট হাতে রূপান্তর করে, এবং c & ~0x20 এটি আবার বড় হাতে রূপান্তর করে। এটি কাজ করে কারণ 'A' (01000001) এবং 'a' (01100001)-এর মধ্যে যে একমাত্র বিটটি ভিন্ন তা হলো বিট ৫। প্রোগ্রামাররা ১৯৬০-এর দশক থেকে অ্যাসেম্বলি এবং C-তে দ্রুত কেস-অসংবেদনশীল তুলনা এবং কেস-ফোল্ডিং রুটিনের জন্য এই কৌশল ব্যবহার করে আসছেন, এবং এটি আজও একটি সাধারণ ইন্টারভিউ প্রশ্ন এবং পার্সিং-নিবিড় কোড পথে একটি ব্যবহারিক অপ্টিমাইজেশন হিসেবে রয়ে গেছে।
প্রিন্টেবল রেঞ্জের সীমানা জানা প্রায় প্রতিটি কোডবেসে দেখা যাওয়া ইনপুট ভ্যালিডেশন প্রথাগুলোরও ভিত্তি। একটি char ডিজিট কিনা তা চেক করা c >= '0' && c <= '9' (কোড ৪৮-৫৭) হিসেবে প্রকাশ করা হয়, বড় হাতের জন্য পরীক্ষা c >= 'A' && c <= 'Z' (৬৫-৯০), এবং ছোট হাতের জন্য c >= 'a' && c <= 'z' (৯৭-১২২)। এই তুলনাগুলো ASCII-এর সংলগ্ন, সাজানো বিন্যাসের ওপর নির্ভর করে — অক্ষর এবং সংখ্যা কোনো ফাঁক ছাড়াই ধারাবাহিকভাবে দেখা যায়, তাই একটি রেঞ্জ চেক নির্ভুল এবং কার্যকর উভয়ই। এই চেকগুলোর যেকোনোটি নিরাপত্তা-গুরুত্বপূর্ণ কোডে (পার্সার, টোকেনাইজার, URL ভ্যালিডেটর) দেখা গেলে, সঠিক ASCII সীমানা জানা off-by-one ভালনারেবিলিটি প্রতিরোধ করে যেখানে একজন আক্রমণকারী প্রত্যাশিত রেঞ্জের ঠিক বাইরে একটি অক্ষর ঢুকিয়ে দিতে পারে।
এক্সটেন্ডেড ASCII, কোড পেজ এবং ইউনিকোডের পথ
৮-বিট বাইট স্ট্যান্ডার্ড হার্ডওয়্যার হয়ে যাওয়ার পর, কোড ১২৮-২৫৫ দিয়ে কী করা হবে তার কোনো একক উত্তর ছিল না। এক্সটেন্ডেড ASCII এমন যেকোনো এনকোডিংয়ের একটি ঢিলেঢালা পরিভাষা যা ASCII ০-১২৭ ব্লক পুনর্ব্যবহার করে এবং উপরের অর্ধেক অতিরিক্ত অক্ষর দিয়ে ভরে দেয় — কিন্তু প্রতিটি ভেন্ডর সেই উপরের অর্ধেক ভিন্নভাবে ভরেছে, ডজন ডজন অসামঞ্জস্যপূর্ণ কোড পেজ তৈরি করেছে। IBM-এর Code Page 437, মূল IBM PC এবং MS-DOS-এর সাথে পাঠানো, কোড ১২৮-২৫৫ ভরেছিল বক্স-ড্রয়িং অক্ষর (─ │ ┌ ┐ └ ┘ এবং তাদের ডাবল-লাইন সংস্করণ), গাণিতিক প্রতীক (≈ ≤ ≥ ÷ ∞ √), গ্রিক অক্ষর এবং কয়েকটি উচ্চারণচিহ্নযুক্ত ইউরোপীয় অক্ষর দিয়ে। সেই বক্স-ড্রয়িং অক্ষরগুলো Borland-এর Turbo Pascal IDE থেকে শুরু করে প্রাথমিক স্প্রেডশিট প্রোগ্রাম পর্যন্ত পুরো MS-DOS অ্যাপ্লিকেশনের ভিজ্যুয়াল নন্দনতত্ত্ব চালিত করেছিল — সবই বাইট স্তরে বিশুদ্ধ ASCII আর্ট দিয়ে আঁকা।
Windows-1252 (অনানুষ্ঠানিকভাবে 'Western European' কোড পেজ বলা হয়) পরে Windows ডকুমেন্টের প্রধান এনকোডিং এবং প্রাথমিক ওয়েবের বেশিরভাগ HTML পেজের অন্তর্নিহিত ডিফল্ট এনকোডিং হয়ে ওঠে। এটি ISO-8859-1 (Latin-1) থেকে বিচ্যুত হয় — পশ্চিম ইউরোপীয় ভাষার আন্তর্জাতিক মানদণ্ড — বিশেষভাবে ১২৮-১৫৯ রেঞ্জে। ISO-8859-1 সেই ৩২টি কোডকে কন্ট্রোল ক্যারেক্টার হিসেবে রেখেছিল (ISO-646 স্ট্যান্ডার্ড থেকে একটি ক্যারি-ওভার); Windows-1252 বরং সেগুলো ইউরো চিহ্ন (€, 0x80), খোলা ও বন্ধ টাইপোগ্রাফিক কোটেশন (" " ' '), এলিপসিস (…) এবং en ও em ড্যাশ (– —)-সহ দরকারী প্রিন্টেবল অক্ষরের জন্য ব্যবহার করেছিল। এই পার্থক্য বছরের পর বছর মোজিবাকে সৃষ্টি করেছে — বিকৃত টেক্সট যেখানে Windows-1252-এ লেখা একটি ডকুমেন্ট Latin-1 হিসেবে ডিকোড করা হয়েছিল, € কে একটি অসংজ্ঞায়িত কন্ট্রোল ক্যারেক্টারে এবং স্মার্ট কোটগুলোকে গার্বেজে পরিণত করে।
একমাত্র সঠিক দীর্ঘমেয়াদী উত্তর ছিল ইউনিকোড, একটি একক এনকোডিং স্পেস যা পৃথিবীর প্রতিটি লেখার সিস্টেমের প্রতিটি অক্ষরকে একটি অনন্য কোড পয়েন্ট বরাদ্দ করে। UTF-8, ওয়েবের প্রধান এনকোডিং প্রায় ২০০৮ সাল থেকে, সম্পূর্ণ ব্যাকওয়ার্ড কম্প্যাটিবিলিটি সংরক্ষণ করেই এটি অর্জন করে: ১২৮-এর নিচে যেকোনো বাইট একটি ASCII অক্ষর, মূল ১৯৬৩ স্ট্যান্ডার্ডের সাথে বাইট-বাই-বাইট অভিন্ন। মাল্টি-বাইট সিকোয়েন্স (কন্টিনিউয়েশন বাইট সংকেত দিতে উচ্চ বিট ব্যবহার করে) ১২৮ এবং তার বেশি কোড পয়েন্ট সামলায়। ব্যবহারিক ফলাফল হলো মূল ASCII টেবিল বোঝা UTF-8 বিশ্বেও ঠিক ততটাই প্রাসঙ্গিক থাকে: প্রথম ১২৮টি কোড পয়েন্ট ঠিক একই, কন্ট্রোল ক্যারেক্টারের একই অর্থ থাকে, এবং প্রিন্টেবল-রেঞ্জের গাণিতিক নিয়ম (ডিজিট অফসেট ৪৮, কেস-ফ্লিপ বিট ৫) কোনো পরিবর্তন ছাড়াই ASCII রেঞ্জে পড়া UTF-8 স্ট্রিংয়ের যেকোনো বাইটে প্রযোজ্য থাকে।
Frequently asked questions
ASCII কোড A থেকে Z কী?
বড় হাতের A-Z ডেসিমেল ৬৫ (A) থেকে ৯০ (Z) পর্যন্ত চলে। ছোট হাতের a-z চলে ৯৭ (a) থেকে ১২২ (z) পর্যন্ত। ছোট হাতের অক্ষরগুলো তাদের বড় হাতের প্রতিরূপের চেয়ে ঠিক ৩২ কোড ওপরে বসে — a হলো ৯৭, b হলো ৯৮, ইত্যাদি। হেক্সাডেসিমেলে সেটা বড় হাতের জন্য 0x41–0x5A এবং ছোট হাতের জন্য 0x61–0x7A। এই ইন্টারঅ্যাক্টিভ টেবিল আপনাকে যেকোনো অক্ষরে ক্লিক করে তাৎক্ষণিকভাবে এর কোড কপি করতে দেয়, তাই চার্টটি মুখস্থ করতে হয় না বা w3schools বা asciitable.com-এর একটি স্ট্যাটিক PDF-এ খুঁজতে হয় না — দুটোতেই কোনো ক্লিক-টু-কপি ফাংশনালিটি ছাড়া একটি স্থির ছবি ম্যানুয়ালি স্ক্যান করতে হয়।
ASCII টেবিল কী?
ASCII টেবিল হলো একটি চার্ট যা প্রতিটি ASCII অক্ষরকে — অক্ষর, সংখ্যা, বিরাম চিহ্ন, স্পেস এবং কন্ট্রোল কোড — ০ থেকে ১২৭-এর মধ্যে একটি সংখ্যার সাথে ম্যাপ করে। এটি ডেসিমেল, হেক্সাডেসিমেল, অক্টাল এবং বাইনারিতে দেখানো হয়, প্রতিটি অক্ষরের HTML এন্টিটির পাশাপাশি। এটি প্রোগ্রামার, ডেভেলপার, শিক্ষার্থী এবং ইঞ্জিনিয়ারদের ব্যবহৃত রেফারেন্স যা টেক্সট এনকোডিং, সিরিয়াল কমিউনিকেশন, লো-লেভেল ডেটা ম্যানিপুলেশন বা যেকোনো সিস্টেমে কাজ করার সময় দেখতে ব্যবহৃত হয় যেখানে কাঁচা ক্যারেক্টার কোড গুরুত্বপূর্ণ। w3schools.com বা asciitable.com-এর স্ট্যাটিক চার্টের বিপরীতে, এই টেবিলটি ইন্টারঅ্যাক্টিভ এবং সার্চযোগ্য।
ASCII-এর ২৫৬টি অক্ষর কী কী?
স্ট্যান্ডার্ড ASCII মাত্র ১২৮টি অক্ষর (কোড ০-১২৭) সংজ্ঞায়িত করে ৭ বিট ব্যবহার করে। মানুষ ২৫৬-অক্ষরের সেটের কথা বলতে যা বোঝায় তা হলো 'এক্সটেন্ডেড ASCII', যা কোড ১২৮-২৫৫ যোগ করতে সম্পূর্ণ ৮ম বিট ব্যবহার করে। সেই উপরের ১২৮টি স্লট সত্যিকারের ASCII-এর অংশ নয় এবং কোড পেজ অনুযায়ী পরিবর্তিত হয়। সবচেয়ে সাধারণ ম্যাপিং হলো Latin-1 (ISO-8859-1), যা সেই স্লটগুলো উচ্চারণচিহ্নযুক্ত অক্ষর এবং é, ñ, ü, £ এবং ¥-এর মতো পশ্চিম-ইউরোপীয় প্রতীক দিয়ে ভরে দেয়। তাদের Latin-1 ম্যাপিংসহ সব ২৫৬টি এন্ট্রি দেখতে এই টুলে 'Show extended' টগল করুন — এমন কিছু যা w3schools বা asciitable.com কোনোটিই ইন্টারঅ্যাক্টিভভাবে সহজ করে না।
ASCII-এর পূর্ণরূপ কী?
ASCII মানে হলো American Standard Code for Information Interchange। এটি একটি ক্যারেক্টার-এনকোডিং স্ট্যান্ডার্ড যা প্রথম ১৯৬৩ সালে প্রকাশিত হয়েছিল এবং ১৯৬৭ ও ১৯৬৮ সালে সংশোধিত হয়েছিল। এটি প্রতিটি ইংরেজি অক্ষর, সংখ্যা, বিরাম চিহ্ন এবং কন্ট্রোল সিগন্যালকে একটি অনন্য সংখ্যা বরাদ্দ করে যাতে কম্পিউটার এবং ডিভাইস একটি সম্মত কোড সেট ব্যবহার করে প্লেইন টেক্সট বিনিময় করতে পারে। UTF-8, আধুনিক ওয়েবের প্রধান এনকোডিং, ASCII-এর একটি সুপারসেট: প্রথম ১২৮টি ইউনিকোড কোড পয়েন্ট ঠিক ASCII-এর মতোই, এই কারণেই আজকের ইউনিকোড-ফার্স্ট বিশ্বেও ASCII টেবিল বোঝা প্রাসঙ্গিক থেকে যায়।
ASCII টেবিল কীভাবে ব্যবহার করব?
Char কলামে (বা উপরের সার্চ বক্সে টাইপ করে) আপনার প্রয়োজনীয় অক্ষরটি খুঁজুন এবং এর ডেসিমেল, হেক্স, অক্টাল ও বাইনারি মান পেতে সারি জুড়ে পড়ুন। বিপরীত দিকে যেতে, একটি সংখ্যা দিয়ে সার্চ করুন — উদাহরণস্বরূপ এটি কোন অক্ষর প্রতিনিধিত্ব করে তা খুঁজতে ৬৫, 0x41 বা ১০০০০০১ টাইপ করুন। এই টুলে আপনি যেকোনো মানে ক্লিক করে এটি তাৎক্ষণিকভাবে ক্লিপবোর্ডে কপিও করতে পারেন। এটি asciitable.com বা w3schools.com-এর একটি স্ট্যাটিক ছবি বা PDF ASCII চার্ট রেফারেন্স করার চেয়ে দ্রুত এবং বেশি নমনীয়, দুটোতেই কোনো ক্লিক-টু-কপি ফাংশনালিটি বা ইন্টিগ্রেটেড টেক্সট কনভার্টার নেই।
একে ASCII কেন বলা হয়?
এটাকে ASCII বলা হয় কারণ সেটাই এর সরকারি নামের সংক্ষিপ্ত রূপ, American Standard Code for Information Interchange। 'American Standard' প্রতিফলিত করে যে এটি American Standards Association (এখন ANSI) দ্বারা US ইংরেজি টেক্সটের জন্য মানকীকৃত হয়েছিল। 'Information Interchange' এর উদ্দেশ্য বর্ণনা করে — বিভিন্ন মেশিন, টার্মিনাল এবং কমিউনিকেশন সিস্টেমকে প্রস্তুতকারক বা অপারেটিং সিস্টেম নির্বিশেষে একটি সম্মত ক্যারেক্টার কোড সেট ব্যবহার করে ডেটা শেয়ার করতে দেওয়া। ASCII-এর আগে, বিভিন্ন কম্পিউটার অসামঞ্জস্যপূর্ণ ক্যারেক্টার সেট ব্যবহার করত, বিভিন্ন হার্ডওয়্যার ভেন্ডরের মধ্যে ডেটা বিনিময়কে অনির্ভরযোগ্য ও ভুল-প্রবণ করে তুলত।
ASCII-এর একটি উদাহরণ কী?
'A' অক্ষরটি একটি ক্লাসিক উদাহরণ: এর ASCII কোড ডেসিমেলে ৬৫, হেক্সাডেসিমেলে 0x41, অক্টালে ১০১ এবং বাইনারিতে ০১০০০০০১। সংখ্যা '০' হলো কোড ৪৮, একটি স্পেস হলো কোড ৩২, এবং একটি লাইন ফিড (নতুন লাইন) হলো কন্ট্রোল কোড ১০। পুরো বর্ণমালা, সংখ্যা এবং সাধারণ বিরাম চিহ্ন উপরের টেবিলে তাৎক্ষণিকভাবে খুঁজে দেখা যায় — একবারে সেই অক্ষরের সব প্রতিনিধিত্ব কপি করতে যেকোনো সারিতে ক্লিক করুন। এই টুলে বিল্ট-ইন টেক্সট → ASCII কনভার্টার আপনাকে যেকোনো বাক্যাংশ রূপান্তর করতে দেয়: 'Hi' ডেসিমেলে হয়ে যায় ৭২ ১০৫ বা হেক্সাডেসিমেলে 48 69।
ASCII টেবিল কি ১২৮ নাকি ২৫৬?
সত্যিকারের ASCII হলো ১২৮টি অক্ষর (কোড ০-১২৭) এবং শুধু ৭ বিট ব্যবহার করে (2⁷ = ১২৮)। ২৫৬-অক্ষরের সংস্করণ হলো এক্সটেন্ডেড ASCII, যা কোড ১২৮-২৫৫ যোগ করতে পুরো ৮-বিট বাইট ব্যবহার করে। তাই কেউ 'ASCII টেবিল' বললে, তারা সাধারণত ১২৮-অক্ষরের স্ট্যান্ডার্ড সেট বোঝায়; '২৫৬' বোঝায় এক্সটেন্ডেড সেটগুলোর একটি যেমন Latin-1 (ISO-8859-1)। এই টুলটি উভয়ই দেখায়: ডিফল্টভাবে স্ট্যান্ডার্ড ১২৮-অক্ষরের টেবিল, এক্সটেন্ডেড Latin-1 এন্ট্রিসহ সব ২৫৬টি অক্ষর দেখাতে একটি টগলসহ — যা w3schools-এর স্ট্যাটিক চার্টে নেই যেখানে শুধু মূল ১২৮টি দেখানো হয়।
ASCII কীভাবে লেখা হয়?
ASCII সংখ্যা হিসেবে লেখা হয়। প্রতিটি অক্ষর এর কোড মান হিসেবে সংরক্ষিত হয়, যা ডেসিমেল (৬৫), হেক্সাডেসিমেল (0x41), অক্টাল (১০১) বা বাইনারি (০১০০০০০১)-এ প্রকাশ করা যায়। একটি কম্পিউটারের ভেতরে প্রতিটি ASCII অক্ষর এক বাইট জায়গা নেয়, তাই 'Hi' শব্দটি দুটি বাইট ৭২ এবং ১০৫ হিসেবে সংরক্ষিত হয়। যখন কোনো ফাইলে বা নেটওয়ার্কে টেক্সট দেখা যায়, সেই বাইটগুলোই আসলে ভ্রমণ করে — আপনি যে অক্ষর গ্লিফগুলো দেখেন তা সফটওয়্যারের সেই কোডগুলোর রেন্ডারিং। প্রোগ্রামিং ভাষাগুলো ASCII মান ভিন্নভাবে প্রকাশ করে: Python ৬৫ পেতে ord('A') এবং 'A' পেতে chr(65) ব্যবহার করে।
ASCII-তে 'I love you' কী?
ডেসিমেল ASCII কোডে লেখা, 'I love you' হলো: ৭৩ ৩২ ১০৮ ১১১ ১১৮ ১০১ ৩২ ১২১ ১১১ ১১৭ — যেখানে ৭৩ হলো 'I', ৩২ স্পেস, ১০৮ ১১১ ১১৮ ১০১ হলো 'love', আরেকটি ৩২ স্পেসের জন্য, এবং ১২১ ১১১ ১১৭ হলো 'you'। এই টুলে বিল্ট-ইন টেক্সট → ASCII কনভার্টার দিয়ে আপনি এটি তাৎক্ষণিকভাবে পুনরুৎপাদন করতে পারেন: যেকোনো বাক্যাংশ টাইপ করুন এবং সাথে সাথেই এর সম্পূর্ণ ডেসিমেল, হেক্স বা বাইনারি প্রতিনিধিত্ব পান। আর কোনো ধাপের দরকার নেই — একটি আলাদা 'টেক্সট টু ASCII' পেজে নেভিগেট করতে হয় এমন ক্যালকুলেটর সাইটের বিপরীতে, কনভার্টারটি একই পেজেই রয়েছে।
ASCII কি শুধু ৭ বিট?
হ্যাঁ — স্ট্যান্ডার্ড ASCII একটি ৭-বিট কোড, এই কারণেই এতে ঠিক ১২৮টি অক্ষর আছে (2⁷ = ১২৮)। একটি বাইটের ৮ম বিট ইচ্ছাকৃতভাবে মূল স্ট্যান্ডার্ডে মুক্ত রাখা হয়েছিল, এবং পরবর্তী এক্সটেন্ডেড ASCII এনকোডিং সেটি ব্যবহার করে আরও ১২৮টি অক্ষর যোগ করেছিল। আধুনিক সিস্টেম এক্সটেন্ডেড ASCII-এর বদলে ইউনিকোড (UTF-8 হিসেবে এনকোড করা) ব্যবহার করে, কিন্তু লিগ্যাসি ডেটা, সিরিয়াল প্রোটোকল, মাইক্রোকন্ট্রোলার ফার্মওয়্যার, নেটওয়ার্ক এস্কেপ সিকোয়েন্স এবং C বা অ্যাসেম্বলি ভাষায় লো-লেভেল টেক্সট প্রসেসিং নিয়ে কাজ করতে ৭-বিট ASCII বোঝা এখনও অপরিহার্য।
ASCII ১২৮ থেকে ২৫৫ কী?
কোড ১২৮-২৫৫ হলো 'এক্সটেন্ডেড ASCII' রেঞ্জ। এগুলো মূল ৭-বিট ASCII স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত নয়, তাই তাদের অর্থ ব্যবহৃত কোড পেজের ওপর নির্ভর করে। সবচেয়ে সাধারণ ব্যাখ্যা হলো Latin-1 (ISO-8859-1), যা সেই স্লটগুলো উচ্চারণচিহ্নযুক্ত অক্ষর (é, ñ, ü), মুদ্রার প্রতীক (£, ¥) এবং অন্যান্য পশ্চিম-ইউরোপীয় অক্ষর দিয়ে ভরে দেয়। Windows সিস্টেম প্রায়ই বরং Windows-1252 ব্যবহার করে, যা ১২৮-১৫৯ রেঞ্জে Latin-1 থেকে সামান্য ভিন্ন। ১২৭-এর ওপরে কোডের জন্য Latin-1 ম্যাপিংসহ সম্পূর্ণ ২৫৬-অক্ষরের সেট দেখতে এই ASCII টেবিলে 'Show extended' টগল করুন।
এই ASCII টেবিল কি ফ্রি এবং প্রাইভেট?
হ্যাঁ — সম্পূর্ণভাবে ফ্রি, কোনো সাইনআপ নেই, কোনো ব্যবহারের সীমা নেই, এবং কোথাও কিছু আপলোড হয় না। পুরো টেবিলটি পেজেই বিল্ট-ইন এবং আপনার ব্রাউজারে স্থানীয়ভাবে রেন্ডার হয়। asciitable.com এবং w3schools.com-এর স্ট্যাটিক ASCII লুকআপ টুলের বিপরীতে যা একটি নন-ইন্টারঅ্যাক্টিভ টেবিলের পাশাপাশি ভারী বিজ্ঞাপন দেয়, এই টুলটি সম্পূর্ণ ইন্টারঅ্যাক্টিভ, সার্চযোগ্য এবং একই পেজে একটি দুই-দিকের টেক্সট ↔ ASCII কনভার্টার অন্তর্ভুক্ত করে। পেজ একবার লোড হয়ে গেলে এটি অফলাইনেও কাজ করে — এমবেডেড সিস্টেম ল্যাব বা বাহ্যিক রিকোয়েস্ট সীমাবদ্ধ করা কর্পোরেট নেটওয়ার্কের মতো ইন্টারনেট ছাড়া পরিবেশে ডিবাগিংয়ের জন্য আদর্শ।
Related tools
সব টুল দেখুনস্প্রেডশিট কলাম কনভার্টার
একটি স্প্রেডশিট কলাম নম্বরকে তার অক্ষরে (1 → A) ও আবার ফিরিয়ে রূপান্তর করুন।
Srcset জেনারেটর
আপনার প্রস্থ থেকে srcset ও sizes সহ রেসপন্সিভ <img> মার্কআপ তৈরি করুন।
Regex টেস্টার
লাইভ ম্যাচ হাইলাইট, ক্যাপচার গ্রুপ ও রিপ্লেস প্রিভিউ সহ রেগুলার এক্সপ্রেশন পরীক্ষা করুন।
HTML to Markdown
Convert HTML to clean Markdown — pastes, imports files, and handles lists, tables and code.
JSON Schema Validator
Validate JSON against a JSON Schema (draft-07 / draft-2020-12) with clear error messages.
YAML Formatter
Validate, beautify, and convert YAML online. Real-time syntax highlighting, error detection with line numbers, and one-click JSON export.