ASCII Encoding อธิบาย: ข้อความ, ทศนิยม, Hex, ไบนารี และ Octal
ASCII จับคู่ตัวอักษรที่พิมพ์ได้ทุกตัวกับตัวเลขระหว่าง 0 ถึง 127 การเข้าใจตัวเลขเหล่านั้นในระบบทศนิยม hex ไบนารี และ octal เป็นทักษะที่นักพัฒนาต้องใช้บ่อยกว่าที่คาด
ASCII คืออะไร?
ASCII ย่อมาจาก American Standard Code for Information Interchange เผยแพร่ในปี 1963 กำหนดการแมประหว่าง 128 ตัวอักษรกับจำนวนเต็ม 0 ถึง 127 ตัวอักษร 128 ตัวนี้ครอบคลุมตัวอักษรภาษาอังกฤษ (ตัวพิมพ์ใหญ่และเล็ก) ตัวเลข 0–9 เครื่องหมายวรรคตอน และอักขระควบคุม 33 ตัว เช่น ขึ้นบรรทัดใหม่ แท็บ และ carriage return
ตัวอักษรไทยไม่ได้อยู่ในช่วง ASCII 0–127 ระบบที่ใช้ภาษาไทยต้องใช้การเข้ารหัสเพิ่มเติม เช่น TIS-620 หรือ UTF-8
ทำไมนักพัฒนายังต้องใช้ ASCII
- อ่านไฟล์ binary: ใน hex editor แผงด้านขวาแสดงการตีความ ASCII ของแต่ละ byte รู้ว่า
0x48 0x54 0x54 0x50สะกด "HTTP" ทำให้เข้าใจทันที - Debug network protocols: traffic TCP และ HTTP ดิบเป็นข้อความ ASCII การดักจับ packet อ่านได้เมื่อรู้ตาราง
- URL encoding: space คือ ASCII 32 (
0x20) จึงกลายเป็น%20ใน URL เครื่องหมาย % ตามด้วยค่า hex ของ ASCII - Escape sequences:
\nคือ ASCII 10,\tคือ ASCII 9,\rคือ ASCII 13 - ระบบ legacy: Mainframe, embedded firmware และ serial protocols ถูกออกแบบมาให้ใช้ ASCII
สี่ระบบตัวเลข ด้วยตัวอย่างเดียว
ตัวอักษร A เป็นตัวอย่างที่ดีที่สุดเพราะค่าของมันจำง่ายในทั้งสี่ระบบ
| ระบบ | ค่าของ "A" | วิธีอ่าน |
|---|---|---|
| ทศนิยม (Decimal) | 65 | ฐาน 10 ระบบที่ใช้นับปกติ |
| เลขฐานสิบหก (Hex) | 0x41 | ฐาน 16; 4×16 + 1 = 65 |
| เลขฐานสอง (Binary) | 01000001 | ฐาน 2; bits จริงที่เก็บในหน่วยความจำ |
| เลขฐานแปด (Octal) | 101 | ฐาน 8; 1×64 + 0×8 + 1 = 65 |
ตัวพิมพ์เล็ก a คือทศนิยม 97 (0x61) ความต่างระหว่างตัวพิมพ์ใหญ่และเล็กคือ 32 พอดี — ค่าเดียวกับ space ไม่ใช่เรื่องบังเอิญ แต่เป็นการออกแบบจงใจให้การแปลงตัวพิมพ์เป็นการเปลี่ยน bit เพียงตัวเดียว
ตัวอย่างปฏิบัติ
URL Encoding
เมื่อ browser เข้ารหัส URL จะนำค่า ASCII ของแต่ละตัวอักษรที่ไม่ปลอดภัยแล้วเขียนเป็นเครื่องหมาย % ตามด้วยสองหลักฐาน hex Space (ASCII 32 = 0x20) กลายเป็น %20 ใช้ URL Encoder/Decoder เพื่อเข้ารหัสหรือถอดรหัส URL ทันที
Escape Sequences
\n— ASCII 10, ขึ้นบรรทัดใหม่\r— ASCII 13, carriage return (ท้ายบรรทัด Windows:\r\n)\t— ASCII 9, tab แนวนอน\0— ASCII 0, null (ตัวสิ้นสุด string ใน C)\x41— Hex escape; ASCII 65 = "A"
Extended ASCII และ Unicode
ASCII มาตรฐานครอบคลุม 128 ตัวอักษร พอสำหรับภาษาอังกฤษแต่ไม่พอสำหรับภาษาอื่น รูปแบบ "Extended ASCII" ต่างๆ ใช้ bit ที่ 8 เพื่อเพิ่ม 128 ตัวอักษร แต่ไม่มีมาตรฐานเดียว code page ต่างๆ ใช้ช่วง byte เดียวกันสำหรับตัวอักษรที่ต่างกัน
Unicode แก้ปัญหานี้โดยกำหนดหมายเลขเฉพาะให้ทุกตัวอักษรในทุกระบบการเขียน UTF-8 เข้ากันได้กับ ASCII แบบย้อนหลัง: 128 code points แรกของ Unicode เหมือน ASCII ทุกประการ
เครื่องมือที่เกี่ยวข้อง
Binary to Text Converter แปลง string binary ดิบเป็นข้อความที่อ่านได้ สำหรับการแปลงระหว่างฐานตัวเลข Number Base Converter รองรับทศนิยม hex binary และ octal
คำถามที่พบบ่อย
ค่า ASCII ของ space คืออะไร?
Space คือ ASCII 32 (ทศนิยม), 0x20 (hex), 00100000 (binary) เป็นตัวอักษรที่พิมพ์ได้ ASCII ที่ต่ำที่สุด
ความแตกต่างระหว่าง ASCII และ Unicode คืออะไร?
ASCII กำหนด 128 ตัวอักษร Unicode กำหนดมากกว่า 140,000 ตัว 128 code points แรกของ Unicode เหมือน ASCII ดังนั้นข้อความ ASCII ที่เข้ารหัส UTF-8 จึง byte ต่อ byte เหมือน ASCII ปกติ
แปลงข้อความเป็น ASCII ตอนนี้
วางข้อความใดก็ได้และดูค่าทศนิยม hex ไบนารี และ octal ของทุกตัวอักษรทันที