ข้ามไปยังเนื้อหา
Guide Apr 5, 2026 · 3 min read

คอมพิวเตอร์สร้างสีได้อย่างไร: เรื่องของ RGB, HEX และเลขฐานสอง

#FF0000. #00FF00. #0000FF. รหัสเหล่านี้เคยผ่านตาในไฟล์ดีไซน์หรือโค้ดมาบ้างแล้วแน่นอน ดูเหมือนรหัสลับหรือโค้ดเกม แต่ที่จริงแล้วมันคือ ชื่อของสี

#FF0000
#00FF00
#0000FF

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

RGB — สามตัวอักษรที่สร้างสี

Red, Green, Blue คือสามแม่สีของแสง ผสมกันในสัดส่วนต่างๆ จึงได้ทุกสีที่มองเห็นบนหน้าจอ

เราเห็น RGB อยู่ทุกวัน

ที่ใดมีหน้าจอ ที่นั่นมี RGB

  • จอมอนิเตอร์ / TV — แต่ละพิกเซลประกอบด้วยจุดสีแดง เขียว น้ำเงินสามจุด
  • หน้าจอสมาร์ตโฟน — โครงสร้างเดียวกัน แต่พิกเซลเล็กกว่า
  • LED คีย์บอร์ดเกมมิ่ง — แต่ละปุ่มมี LED สาม R·G·B ดวง
  • ไฟตกแต่ง PC — RGB strip ก็คือสัญญาณ RGB

ขยายหน้าจอให้ใหญ่พอ ก็จะเห็น แดง เขียว น้ำเงิน แค่นั้นเอง จุด RGB ขนาดเล็กนับล้านจุดรวมกันกลายเป็นภาพหนึ่งหน้าจอ

สีสร้างจากการผสม

RGB แต่ละช่องมีความเข้มตั้งแต่ 0 ถึง 255

  • RGB(255, 0, 0) — แดงสูงสุด → แดงบริสุทธิ์
  • RGB(0, 255, 0) — เขียวสูงสุด → เขียวบริสุทธิ์
  • RGB(255, 255, 0) — แดง + เขียว → เหลือง
  • RGB(0, 0, 0) — ทั้งหมดปิด → ดำ
  • RGB(255, 255, 255) — ทั้งหมดสูงสุด → ขาว

แดงผสมเขียวได้เหลืองอาจดูขัดกับสัญชาตญาณ แต่นี่คือ การผสมแสง ต่างจากการผสมสีน้ำในชั่วโมงศิลปะ (แดง + เขียว = น้ำตาล) แสงยิ่งรวมกันยิ่งสว่าง รวมครบทุกสีได้ขาว

ลองขยับสไลเดอร์ทั้งสามด้วยตัวเองดูได้เลย

#FF5733
RGB · 255 · 87 · 51
R 255 11111111
G 87 01010111
B 51 00110011

ตัวเลข 8 หลักทางด้านขวาคือ เลขฐานสอง ของช่องนั้น เมื่อขยับสไลเดอร์ตัวเลขจะเปลี่ยนตาม จะได้ 256 ค่าจาก 0 กับ 1 ได้อย่างไร — นั่นคือหัวข้อถัดไป

ทำไมถึงเป็น 0 ถึง 255?

คอมพิวเตอร์ทำงานกับ 0 และ 1 เท่านั้น หนึ่งหลักที่บรรจุได้แค่ 0 หรือ 1 เรียกว่า บิต (bit) ยิ่งเพิ่มบิต จำนวนค่าที่แทนได้ก็เพิ่มขึ้น สองเท่า ทุกครั้ง

0/1
1 บิต
= 2 ค่า
0/10/1
2 บิต
= 4 ค่า
0/10/10/10/1
4 บิต
= 16 ค่า
0/10/10/10/1 0/10/10/10/1
8 บิต
= 256 ค่า ← หนึ่งช่อง RGB

8 บิต = 1 ไบต์ (byte) สีหนึ่งสีมี RGB สามช่อง รวมเป็น 3 ไบต์ = 24 บิต ซึ่งแทนสีได้ประมาณ 16.7 ล้านสี — มากพอสำหรับสายตามนุษย์ จึงกลายเป็นมาตรฐาน 1 ไบต์ต่อช่อง

ลองอ่านเลขฐานสองด้วยตัวเอง

แต่ละหลักมีค่าตายตัว จากซ้ายไปขวาคือ 128, 64, 32, 16, 8, 4, 2, 1 — กำลังของ 2

1282⁷
642⁶
322⁵
162⁴
8
4
2
12⁰

บวกค่าของทุกหลักที่เป็น 1 รวมกัน ก็จะได้เลขฐานสิบ

ตัวอย่าง 1
0128
064
032
016
18
04
12
01
8 + 2 = 10
ตัวอย่าง 2
1128
164
132
116
08
04
02
01
128 + 64 + 32 + 16 = 240
ตัวอย่าง 3 — ทั้ง 8 หลักเป็น 1
1128
164
132
116
18
14
12
11
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255

ดังนั้นค่าสูงสุดของ 8 บิตคือ 255 นั่นคือเหตุผลที่ RGB แต่ละช่องมีช่วง 0–255 พอดี

HEX — ตัวเลขเดิม แต่สั้นกว่า

RGB(255, 255, 255) มีอักขระ 16 ตัว ยาวเกินไปสำหรับเขียนทุกครั้งใน CSS หรือช่องดีไซน์ จึงมีวิธีเขียนตัวเลขเดียวกันให้สั้นลง

เลขฐานสิบหกคืออะไร

เลขฐานสิบหกคือระบบที่ใช้ตัวอักษรหนึ่งตัวแทนค่า 0–15 แต่ตัวเลขที่ใช้กันทั่วไปมีแค่ 0–9 สิบตัว จึงยืมตัวอักษรจากตัวละตินมาเติม 6 ตัว

00
11
22
33
44
55
66
77
88
99
10A
11B
12C
13D
14E
15F

กฎมีสามข้อ

  • 0–9 ใช้ตามปกติ
  • 10 เป็นต้นไป เริ่มจาก A
  • F คือค่าสูงสุดหนึ่งหลัก (= 15)

ทำไมถึงเป็นเลขฐานสิบหก?

เลขฐานสอง 4 หลัก (0000 – 1111) แทนได้พอดี 16 ค่า

00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

เลขฐานสอง 4 หลัก = เลขฐานสิบหก 1 หลัก ย่อสี่หลักเหลือหนึ่งหลัก เมื่อ RGB แต่ละช่องมี 8 บิต จึงได้ เลขฐานสิบหกพอดี 2 หลัก

วิธีแปลง RGB เป็น HEX

ลองแปลง RGB(255, 87, 51) กัน

01
แปลงค่า R เป็นเลขฐานสิบหก
255FF
02
แปลงค่า G เป็นเลขฐานสิบหก
8757
03
แปลงค่า B เป็นเลขฐานสิบหก
5133
04
ใส่ # นำหน้า แล้วเรียง R·G·B
#FF5733

จาก 14 อักขระ เหลือเพียง 7 อักขระ

อ่าน HEX แล้วเดาสีได้

มองในทิศทางกลับกัน ดู HEX ก็พอจะเดาสีได้

  • #FF5733 — R สูงสุด (FF), G กลาง (57), B ต่ำ (33) → ส้ม ที่มีแดงเด่น
  • #3576E0 — R ต่ำ (35), G กลาง (76), B สูง (E0) → น้ำเงิน ที่ออกม่วงเล็กน้อย
  • #29A85A — R ต่ำ (29), G สูง (A8), B ต่ำ (5A) → เขียว สดใส

แค่ดูสามตำแหน่งก็บอกได้ว่า “เป็นแนวส้มหรือน้ำเงิน” นักออกแบบกับนักพัฒนาจึงคุยกันได้ด้วยภาษาเดียวกัน

สรุปสั้นๆ

  • RGB — สามช่องสี แดง เขียว น้ำเงิน ค่า 0–255
  • เลขฐานสอง 8 บิต — ที่มาของ 256 ค่าต่อหนึ่งช่อง
  • HEX — เขียนตัวเลขเดิมในรูปแบบสั้น 2 หลัก

เมื่อสามแนวคิดนี้เชื่อมกัน รหัสสีไม่ใช่ภาษาต่างดาวอีกต่อไป — ตัวเลขสาม RGB ก็คือหกอักขระ HEX นั่นเอง

ขั้นตอนต่อไปคือการแปลงตัวเลขเหล่านี้เป็นภาษาของนักออกแบบ คำขอเช่น “สว่างขึ้นนิดหน่อย” “ความอิ่มตัวน้อยลง” หรือ “เหมือนกันบนกระดาษ” จัดการได้ยากด้วย RGB และ HEX เพียงอย่างเดียว วิธีที่ HSL, CMYK และ OKLCH แก้ปัญหานี้มีต่อใน RGB ยังไม่พอ: สัญกรณ์สี HSL, CMYK และ OKLCH