แปลงข้อความเป็นเลขฐานสองและฐานสิบหก ทำไมตัว ก ภาษาไทยจึงใช้ 3 ไบต์

31 ตุลาคม, 2026 • คู่มือ • 36 การดู

แป้นพิมพ์คอมพิวเตอร์รุ่นเก่าวางข้างแถบกระดาษเจาะรูยาวเป็นแถว และกระถางต้นไม้เล็ก ๆ ในแสงธรรมชาติ

วิธีแปลงข้อความเป็นเลขฐานสอง ฐานสิบหก และฐานสิบ รวมถึงการแปลงกลับเป็นตัวอักษร พร้อมเหตุผลที่อักษรไทยใช้ 3 ไบต์ใน UTF-8 แต่ใช้เพียง 1 ไบต์ใน TIS-620

การแปลงข้อความเป็นเลขฐานสองคือการเปลี่ยนตัวอักษรแต่ละตัวเป็นไบต์ แล้วเขียนแต่ละไบต์ด้วยเลข 0 และ 1 ตัวอักษรภาษาอังกฤษอย่าง A ใช้ 1 ไบต์ แต่อักษรไทยใช้ 3 ไบต์เมื่อเข้ารหัสแบบ UTF-8 ตัว ก จึงออกมาเป็น 11100000 10111000 10000001

ความยาวนี้เป็นไปตามวิธีที่ UTF-8 เก็บอักษรไทย ไม่ใช่ความผิดพลาดของเครื่องมือ ถ้าเข้าใจว่าไบต์ถูกจัดกลุ่มอย่างไร คุณจะอ่านผลลัพธ์ได้ถูกต้อง และแปลงเลขฐานสองกลับเป็นตัวอักษรไทยได้โดยไม่เจออักขระเพี้ยน

วิธีแปลงข้อความเป็นเลขฐานสองด้วยตัวแปลงเลขฐานสอง

เปิด “ตัวแปลงเลขฐานสอง” วางข้อความ เลือกประเภท “เป็นไบนารี” แล้วกด “ส่ง” ผลลัพธ์จะแสดงเป็นรายไบต์และคั่นด้วยเว้นวรรค เครื่องมือทุกตัวที่กล่าวถึงในบทความนี้อยู่บน Digily Link ซึ่งเป็นผลิตภัณฑ์ของเราเอง

  1. วางหรือพิมพ์ข้อความลงในช่อง “เนื้อหา” เช่น ก
  2. ในช่อง “ประเภท” ให้เลือก “เป็นไบนารี”
  3. กดปุ่ม “ส่ง”
  4. ดูผลในช่อง “ผลลัพธ์” ตัว ก จะได้ 11100000 10111000 10000001
  5. กดไอคอนคัดลอก (“คัดลอกไปยังคลิปบอร์ด”) แล้วนำไปวางในงานที่ต้องการ

ถ้าต้องการแปลงเลขฐานสองกลับเป็นตัวอักษร ให้วางตัวเลขในช่อง “เนื้อหา” แล้วเลือก “เป็นข้อความ” ควรใช้เว้นวรรคคั่นระหว่างค่าไบต์แต่ละตัว เช่น 11100000 10111000 10000001 เพราะเครื่องมือใช้เว้นวรรคเป็นตัวแบ่งไบต์

ขั้นตอนเดียวกันนี้ใช้ได้กับ ตัวแปลงเลขฐานสิบหกเพื่อแปลงข้อความเป็นเลขฐานสิบหก โดยเลือกประเภท “เป็นเลขฐานสิบหก” และใช้กับ ตัวแปลงเลขทศนิยมซึ่งแสดงค่าไบต์ของ UTF-8 เป็นเลขฐานสิบ โดยเลือก “เป็นเลขทศนิยม” แม้ชื่อเครื่องมือจะใช้คำว่าทศนิยม แต่ผลที่ได้คือเลขฐานสิบของแต่ละไบต์

ตารางด้านล่างแสดงตัวอย่างผลลัพธ์จากเครื่องมือทั้งสามตัว โดยย่อผลเลขฐานสองของข้อความที่ยาว

ข้อความตัวแปลงเลขฐานสองตัวแปลงเลขฐานสิบหกตัวแปลงเลขทศนิยม
A10000014165
Hi1001000 1101001486972 105
ก11100000 10111000 10000001e0b881224 184 129
฿10011100000 10111000 10111111 110001 110000 110000e0b8bf313030224 184 191 49 48 48
สวัสดี18 กลุ่ม กลุ่มละ 8 บิต (ไม่แสดงทั้งหมด)e0b8aae0b8a7e0b8b1e0b8aae0b894e0b8b5224 184 170 224 184 167 224 184 177 224 184 170 224 184 148 224 184 181

แถว ฿100 เห็นความต่างได้ชัดที่สุด สัญลักษณ์ ฿ ใช้ 3 ไบต์เพราะอยู่ในช่วงอักษรไทย ส่วนเลขอารบิก 1 0 0 ใช้ตัวละ 1 ไบต์ ในข้อความเดียวกันจึงมีทั้งชุด 3 ไบต์ของ ฿ และไบต์เดี่ยวของตัวเลข ซึ่งเครื่องมือแสดงโดยไม่เติม 0 ด้านหน้าจึงดูสั้นกว่า

ทำไมอักษรไทยจึงใช้ 3 ไบต์ใน UTF-8

อักษรไทยทุกตัวใช้ 3 ไบต์ เพราะเลขรหัส Unicode ของอักษรไทยอยู่ในช่วงที่มาตรฐาน UTF-8 กำหนดให้เก็บด้วย 3 ไบต์ ไฟล์ Blocks.txt ของ Unicode (ตรวจเมื่อ 29 ตุลาคม 2569) ระบุว่าบล็อกอักษรไทยอยู่ที่ U+0E00 ถึง U+0E7F ในบล็อกนี้มีทั้งตัว ก (U+0E01) สัญลักษณ์ ฿ (U+0E3F) และเลขไทยตั้งแต่ ๐ (U+0E50) ถึง ๙ (U+0E59)

เอกสาร RFC 3629 ส่วนที่ 3 ซึ่งกำหนดมาตรฐาน UTF-8 แบ่งจำนวนไบต์ตามช่วงรหัสไว้ดังนี้

ช่วงรหัส Unicodeจำนวนไบต์รูปแบบบิต
0000 ถึง 007F (เช่น A)10xxxxxxx
0080 ถึง 07FF2ดูใน RFC 3629
0800 ถึง FFFF ยกเว้น D800 ถึง DFFF (อักษรไทยทั้งบล็อก)31110xxxx 10xxxxxx 10xxxxxx
10000 ถึง 10FFFF4ดูใน RFC 3629

ลองนำ ก มาใส่ในรูปแบบนี้ดู เริ่มจากเขียน 0E01 เป็นเลขฐานสอง 16 บิต ได้ 0000 1110 0000 0001 จากนั้นแบ่งเป็น 3 ส่วน ยาว 4, 6 และ 6 บิต ได้ 0000, 111000 และ 000001 แล้วนำไปแทนตำแหน่ง x ทีละส่วน จะได้ 11100000 10111000 10000001 ซึ่งเขียนเป็นฐานสิบหกได้ว่า E0 B8 81

สิ่งที่ทำให้ตัวเลขยาวขึ้นคือบิตส่วนหัว เลข 1110 ในไบต์แรกบอกว่าตัวอักษรนี้มี 3 ไบต์ ส่วน 10 ในไบต์ที่สองและที่สามบอกว่าเป็นไบต์ที่ต่อจากไบต์แรก จากทั้งหมด 24 บิต จึงเหลือตำแหน่งสำหรับเก็บเลขรหัส Unicode 16 บิต ซึ่งอาจมี 0 นำหน้าได้

ตัว ก ในระบบ Unicode UTF-8 และ TIS-620

อักษร ก มีค่ารหัสต่างกันตามระบบที่ใช้ ขึ้นอยู่กับว่ากำลังดูเลขรหัส Unicode ไบต์ของ UTF-8 หรือไบต์ของ TIS-620 ตารางนี้รวบรวมจากตารางทางการของ Unicode และ RFC 3629

ระบบค่าของ ก
เลขรหัส UnicodeU+0E01 (ฐานสิบ 3585)
UTF-8 ฐานสิบหกE0 B8 81
UTF-8 ฐานสิบ224 184 129
UTF-8 ฐานสอง11100000 10111000 10000001
TIS-620 และ ISO 8859-11 (สำหรับตัว ก)A1 (ฐานสิบ 161 ฐานสอง 10100001)

ในรหัส TIS-620 ตัว ก ใช้ 1 ไบต์ คือ A1 (ฐานสิบหก) แต่ใน UTF-8 ใช้ 3 ไบต์ คือ E0 B8 81 ไฟล์ ตารางเทียบรหัส ISO 8859-11 ของ Unicode (ตรวจเมื่อ 29 ตุลาคม 2569) ระบุว่ามาตรฐาน ISO/IEC 8859-11 ฉบับปี 2001 เทียบเท่ากับ TIS 620-2533 (1990) ต่างกันเพียงการเพิ่มอักขระ NO-BREAK SPACE ที่ตำแหน่ง A0 ไฟล์เดียวกันยืนยันว่า ก มีค่า A1

เลข 3585 คือเลขรหัสของตัวอักษร ไม่ใช่ค่าไบต์ที่เครื่องมือใช้ หากนำสองค่านี้มาใช้สลับกัน การแปลงกลับจะได้ตัวอักษรผิด ดูรายละเอียดได้ในตารางข้อควรระวังด้านล่าง

สาเหตุหนึ่งที่ข้อความไทยกลายเป็นอักขระเพี้ยนคือไฟล์ที่บันทึกแบบ TIS-620 ถูกเปิดแบบ UTF-8 ไบต์ A1 (10100001) ซึ่งแทนตัว ก ใน TIS-620 ขึ้นต้นด้วย 10 จึงเป็นไบต์เริ่มต้นของ UTF-8 ไม่ได้ โปรแกรมจึงแสดงอักขระทดแทนหรือข้อความที่อ่านไม่ออก

วิธีแปลงเลขฐานสองกลับเป็นตัวอักษรไทยด้วยมือ

การแปลงเลขฐานสองกลับเป็นตัวอักษรไทยด้วยมือทำได้โดยแยกกลุ่มตามเว้นวรรค (ถ้าเป็นเลขต่อกันยาว ๆ ให้แบ่งทีละ 8 บิต) เติม 0 ทางซ้ายให้แต่ละกลุ่มครบ 8 บิต แปลงแต่ละกลุ่มเป็นตัวเลข แล้วนับไบต์ที่ขึ้นต้นด้วย 1110 รวมกับไบต์ต่อเนื่องที่ขึ้นต้นด้วย 10 อีก 2 ไบต์เป็นตัวอักษร 1 ตัว ลองฝึกกับ 11100000 10111000 10101010

  1. แยกเป็นกลุ่มละ 8 บิต ได้ 11100000, 10111000 และ 10101010
  2. แปลงแต่ละกลุ่มเป็นฐานสิบ ได้ 224, 184 และ 170 หรือแปลงเป็นฐานสิบหก ได้ E0, B8 และ AA
  3. ไบต์แรกขึ้นต้นด้วย 1110 แปลว่าไบต์นี้กับอีก 2 ไบต์ถัดไปรวมกันเป็นตัวอักษรตัวเดียว
  4. ตัดส่วนหัวออก คือ 1110 ในไบต์แรก และ 10 ในไบต์ที่สองกับที่สาม จะเหลือ 0000, 111000 และ 101010
  5. นำมาต่อกันเป็น 0000111000101010 แล้วแปลงเป็นฐานสิบหกทีละ 4 บิต ได้ 0E2A
  6. ค้นในฐานข้อมูลอักขระของ Unicode (UnicodeData.txt) จะพบว่า U+0E2A คือ THAI CHARACTER SO SUA หรือตัว ส

เครื่องมือนี้ไม่เติม 0 ด้านหน้า กลุ่มที่สั้นกว่า 8 หลักจึงต้องเติม 0 ทางซ้ายให้ครบก่อนตรวจรูปแบบบิต ใน UTF-8 ไบต์รูปแบบ 0xxxxxxx คืออักขระ 1 ไบต์ เช่น อักษรละตินหรือเลขอารบิก ส่วน 110xxxxx, 1110xxxx และ 11110xxx เป็นไบต์แรกของชุด 2, 3 และ 4 ไบต์ และ 10xxxxxx เป็นไบต์ต่อเนื่อง เช่น 110001 ในแถว ฿100 เติมเป็น 00110001 มีค่าเท่ากับ 49 ในฐานสิบ ซึ่งก็คือเลข 1

คำที่ยาวขึ้นก็ใช้หลักเดียวกัน คำว่า สวัสดี ประกอบด้วยจุดรหัส Unicode 6 ตำแหน่ง คือ ส ว ั ส ด ี จึงยาว 18 ไบต์ จำนวนจุดรหัสนี้อาจไม่เท่ากับจำนวนตัวที่ตามองเห็น เพราะสระ ั และ ี ซ้อนอยู่บนพยัญชนะ เขียนเป็นฐานสิบได้ว่า 224 184 170 224 184 167 224 184 177 224 184 170 224 184 148 224 184 181 ให้อ่านทีละ 3 ไบต์ ชุดแรก 224 184 170 คือตัว ส จากแบบฝึกหัดข้างต้น และชุดที่สี่ก็มีค่าเดียวกันเพราะเป็นตัว ส เหมือนกัน คุณใช้วิธีนี้ตรวจผลลัพธ์จากเครื่องมือด้วยตัวเองได้

ข้อควรระวังเวลาใช้ตัวแปลงเลขฐานสอง ฐานสิบหก และฐานสิบ

ข้อควรระวังหลักคือ ตัวแปลงเลขฐานสองไม่เติม 0 ด้านหน้า ตัวแปลงเลขฐานสิบหกแปลงกลับไม่ได้ถ้าใส่ตัวเลขแบบเว้นวรรค และตัวแปลงเลขทศนิยมใช้ค่าไบต์ของ UTF-8 ไม่ใช่เลขรหัส Unicode ถ้าแปลงกลับแล้วผลไม่ตรง ให้ตรวจรูปแบบของตัวเลขที่ใส่ก่อน ตารางนี้สรุปพฤติกรรมของเครื่องมือที่ควรรู้ไว้ก่อนใช้งาน

สถานการณ์สิ่งที่เกิดขึ้นวิธีแก้
แปลงข้อความเป็นเลขฐานสองตัวแปลงเลขฐานสองแสดงแต่ละไบต์คั่นด้วยเว้นวรรค และไม่เติม 0 ด้านหน้า ตัว A จึงแสดงเป็น 1000001 ไม่ใช่ 01000001 ค่าทั้งสองเท่ากันถ้างานของคุณต้องใช้ไบต์ละ 8 บิตเต็ม ให้เติม 0 ด้านหน้าเอง
แปลงเลขฐานสองกลับเป็นข้อความเครื่องมือแยกไบต์ด้วยเว้นวรรคเว้นวรรคระหว่างไบต์ทุกครั้ง
ใส่เลขฐานสิบหกแบบเว้นวรรค เช่น E0 B8 81ผลลัพธ์ว่างเวลาแปลงเลขฐานสิบหกกลับเป็นข้อความ ให้ใส่ตัวเลขติดกันโดยไม่เว้นวรรค เช่น e0b881 ซึ่งผลลัพธ์จากเครื่องมือก็เป็นตัวพิมพ์เล็กติดกันอยู่แล้ว
เลขฐานสิบหกมีจำนวนหลักเป็นเลขคี่อาจแปลงไม่สำเร็จตรวจว่ามีครบ 2 หลักต่อไบต์ อักษรไทย 1 ตัวต้องมี 6 หลัก
ใส่ 3585 ในตัวแปลงเลขทศนิยมตัวแปลงเลขทศนิยมใช้ค่าไบต์ของ UTF-8 ถ้าใส่ 3585 ซึ่งเป็นเลขรหัส Unicode ของ ก จะไม่ได้ตัว ก กลับมา แต่ได้อักขระรหัส 0x01 แทนใส่ค่าไบต์ 224 184 129
ข้อความมีแท็ก HTML หรือเครื่องหมาย <แท็กถูกลบออก และข้อความหลัง < ที่ไม่มีการปิดอาจหายไปด้วยตรวจผลลัพธ์ทุกครั้งเมื่อข้อความมีเครื่องหมายนี้
ข้อความมีเครื่องหมาย ' หรือ "เครื่องหมายนี้ถูกเปลี่ยนเป็นรหัส HTML &#39; หรือ &#34; ก่อนแปลง ผลลัพธ์จึงมีไบต์ของรหัสเหล่านี้แทนเครื่องหมายเดิมถ้าต้องการไบต์ของเครื่องหมายจริง ให้ลบเครื่องหมายออกก่อนแปลงแล้วเติมไบต์เอง
ข้อความหลายบรรทัดการขึ้นบรรทัดใหม่ (ไบต์ 0D และ 0A) ถูกแสดงโดยไม่เติม 0 ด้านหน้าเป็น 1101 และ 1010 แต่เมื่อแปลงกลับด้วยตัวแปลงเลขฐานสอง ไบต์เหล่านี้ไม่กลับมาเป็นการขึ้นบรรทัดเดิมแปลงทีละบรรทัด หรือใช้ตัวแปลงเลขฐานสิบหก ซึ่งแปลงการขึ้นบรรทัดกลับได้
มีเว้นวรรคที่ต้นหรือท้ายข้อความเว้นวรรคเหล่านั้นถูกตัดทิ้งก่อนแปลงผลลัพธ์จะไม่มีรหัสของเว้นวรรคที่ต้นและท้ายข้อความ

ถ้าต้องการลองกับข้อความของคุณเอง ให้แปลงข้อความเป็นเลขฐานสองด้วยตัวแปลงเลขฐานสอง แล้วนำผลลัพธ์ไปแปลงกลับด้วยประเภท “เป็นข้อความ” ถ้าเป็นข้อความบรรทัดเดียวและได้ข้อความเดิมครบทุกตัว แสดงว่าการแปลงไปและกลับในกรณีนั้นใช้ได้ แต่ไม่ได้ยืนยันว่าทุกไบต์ของต้นฉบับถูกเก็บครบ เพราะเครื่องมือตัดเว้นวรรคหัวท้ายและปรับเครื่องหมายบางตัวก่อนแปลง

คำถามที่พบบ่อย

แปลงเลขฐาน 2 เป็นตัวอักษรทำอย่างไร

วางเลขฐานสองในตัวแปลงเลขฐานสอง เลือกประเภท “เป็นข้อความ” แล้วกด “ส่ง” ถ้าได้ตัวอักษรไม่ตรง ให้ตรวจว่าเว้นวรรคระหว่างไบต์แล้ว และอักษรไทยแต่ละตัวมีครบ 3 ไบต์ ถ้าไบต์ใดหายไป ตัวอักษรตัวนั้นอาจอ่านไม่ออก

ภาษาไทยใช้กี่ไบต์ใน UTF-8

อักขระไทย 1 ตัวใช้ 3 ไบต์ ไม่ว่าจะเป็นพยัญชนะ สระที่เป็นอักขระแยกอย่าง ั และ ี สัญลักษณ์ ฿ หรือเลขไทย ส่วนอักษรอังกฤษและเลขอารบิกใช้ตัวละ 1 ไบต์ ให้นับตามจำนวนจุดรหัส Unicode ไม่ใช่จำนวนพยางค์หรือจำนวนตัวที่มองเห็น

ตัวแปลง ASCII ใช้กับภาษาไทยได้ไหม

ใส่ภาษาไทยใน “ตัวแปลง ASCII” ได้ แต่แม้ชื่อเครื่องมือจะเป็น ASCII สิ่งที่ได้คือค่าไบต์ของ UTF-8 เช่น ก ได้ 224 184 129 เหมือนกับตัวแปลงเลขทศนิยม ค่านี้ไม่ใช่รหัส ASCII ของ ก เพราะ ASCII เป็นรหัส 7 บิตที่มีค่า 0 ถึง 127 และไม่มีตัวอักษรไทย

ข้อความที่ใส่ในตัวแปลงถูกเก็บไว้ไหม

ข้อความจะถูกส่งไปประมวลผลบนเซิร์ฟเวอร์ ไม่ได้แปลงในเครื่องของคุณ จากโค้ดส่วนแปลงที่เราตรวจ ไม่พบการบันทึกข้อความที่ใส่ลงฐานข้อมูล มีเพียงการนับจำนวนครั้งที่ใช้งาน ถึงอย่างนั้นก็ไม่ควรใส่รหัสผ่านหรือข้อมูลส่วนตัว

0 จาก 0 การให้คะแนน