เครื่องมือแปลงสี HEX เป็น RGB

แปลงสีจาก HEX เป็น RGB ทันทีที่คุณพิมพ์ — ฟรี รวดเร็ว พร้อมตัวอย่างการคำนวณและตารางเปรียบเทียบสีทั่วไปครับ

ตัวอย่างการแปลงสี

HEX #ff5733 = RGB 255, 87, 51

ff → 255 · 57 → 87 · 33 → 51

วิธีการแปลงสี

  • รหัส HEX คือการเขียนช่องสัญญาณสี RGB สามช่องในรูปแบบเลขฐาน 16 โดยใช้ตัวเลขสองหลักต่อหนึ่งช่องสัญญาณ ตั้งแต่ 00 (0) ถึง ff (255)

สีทั่วไปในรูปแบบ HEX และ RGB

สีHEXRGB
สีแดง#ff0000255, 0, 0
สีส้ม#ffa500255, 165, 0
สีเหลือง#ffff00255, 255, 0
สีเขียว#0080000, 128, 0
สีฟ้าอมเขียว (Cyan)#00ffff0, 255, 255
สีน้ำเงิน#0000ff0, 0, 255
สีม่วง#800080128, 0, 128
สีชมพู#ffc0cb255, 192, 203
สีน้ำตาล#a52a2a165, 42, 42
สีขาว#ffffff255, 255, 255
สีเทา#808080128, 128, 128
สีดำ#0000000, 0, 0

ทุกการแปลงค่าจะทำงานในเบราว์เซอร์ของคุณ ไม่มีการอัปโหลดข้อมูลที่คุณกรอกไปยัง BroBroGo

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

จะแปลงสีจาก HEX เป็น RGB ได้อย่างไร?

พิมพ์หรือวางค่าสี HEX ของคุณที่ด้านบน — ค่าสี RGB จะอัปเดตทันทีที่คุณพิมพ์ นอกจากนี้คุณยังสามารถเลือกสีจากจานสีเพื่อดูค่าได้อีกด้วยครับ

การแปลงสีมีความแม่นยำหรือไม่?

ใช่ครับ — HEX และ RGB เป็นการเขียนช่องสัญญาณสีสามช่องเดียวกันในรูปแบบที่ต่างกัน ดังนั้นการแปลงไปมาระหว่างสองรูปแบบนี้จึงมีความแม่นยำร้อยเปอร์เซ็นต์ทั้งสองทิศทางครับ

การแปลงสี HEX เป็น RGB: หลักการทำงานที่แม่นยำ

หน้านี้มีหน้าที่เดียวคือแปลงรหัสสีรูปแบบเลขฐานสิบหก (hexadecimal) เช่น #4f46e5 หรือ #abc ให้เป็นค่า RGB ที่ประกอบด้วยตัวเลขสามตัวระหว่าง 0 ถึง 255 สิ่งที่ทำให้หน้านี้แตกต่างจากเครื่องมือแปลงสีทั่วไปคือ วิธีการแปลงเป็นกระบวนการทางคณิตศาสตร์ที่ตรงไปตรงมา: เลขฐานสิบหกแต่ละคู่จะถูกถอดรหัสเป็นเลขฐานสิบแบบไม่มีเศษเหลือ

รหัส HEX ที่เราเห็นใน CSS หรือแบบกำหนดสีของแบรนด์ แท้จริงแล้วเป็นเพียงการย่อของค่า RGB แบบ 8 บิตต่อแชนเนลเท่านั้น ตัวอักษร #4f46e5 แทนค่าแดง เขียว น้ำเงิน ตามลำดับ เมื่อแปลงเป็นเลขฐานสิบจะได้ 79, 70, 229 ซึ่งเป็นตัวเลขที่เบราว์เซอร์และซอฟต์แวร์ออกแบบใช้จริงในการผสมสีแบบบวก (additive color model)

วิธีการแปลงทางคณิตศาสตร์

การแปลงจาก HEX เป็น RGB ใช้หลักการเลขฐานสิบหกที่每一位มีค่า 0-15 แทนด้วย 0-9 และ A-F การแปลงแต่ละคู่ของ HEX มีสูตรดังนี้:

  • ค่าแรก (หลักสิบ) คูณด้วย 16
  • ค่าที่สอง (หลักหน่วย) บวกเพิ่ม
  • ผลลัพธ์เป็นเลขจำนวนเต็ม 0-255

ตัวอย่าง #4f46e5:

  • แดง: 4f → (4 × 16) + 15 = 64 + 15 = 79
  • เขียว: 46 → (4 × 16) + 6 = 64 + 6 = 70
  • น้ำเงิน: e5 → (14 × 16) + 5 = 224 + 5 = 229

กรณีรหัส 3 หลัก เช่น #abc จะถูกขยายเป็น 6 หลักโดยการซ้ำตัวเลขแต่ละตัว: #abc#aabbcc จากนั้นจึงแปลงตามปกติ ผลลัพธ์ที่ได้คือเลขจำนวนเต็มที่แน่นอน ไม่มีการปัดเศษหรือ clipping เพราะระบบเลขฐานสิบหกกับฐานสิบทำงานร่วมกันแบบ deterministic

รูปแบบอินพุตที่รองรับ

หน้านี้รองรับเฉพาะรหัส HEX มาตรฐานที่ใช้ในงานออกแบบเว็บ ดังนี้:

รูปแบบ ตัวอย่าง วิธีแปลง
6 หลักมี # #4f46e5 แยกเป็น RR, GG, BB
6 หลักไม่มี # 4f46e5 เหมือนกัน ตัด # ออก
3 หลักมี # #abc ขยายเป็น #aabbcc
3 หลักไม่มี # abc ขยายเป็น aabbcc

รหัส 8 หลักที่มี alpha channel เช่น #4f46e580 ไม่รองรับ เพราะหน้านี้ออกแบบมาเพื่อแปลงเฉพาะ RGB ล้วน ๆ โดยไม่มีค่าโปร่งใส หากป้อนรหัสที่ไม่ตรงรูปแบบ ข้อความเตือนจะแสดง: "Enter a hex color like #4f46e5 or #abc."

ข้อผิดพลาดที่พบบ่อยและวิธีหลีกเลี่ยง

ผู้ใช้มักเจอปัญหาเหล่านี้เมื่อแปลง HEX เป็น RGB:

  • ใช้อักษรผิด: ระบบเลขฐานสิบหกใช้เฉพาะ 0-9 และ A-F (ไม่区分ตัวพิมพ์ใหญ่-เล็ก) การใส่ตัวอักษร G, H หรืออื่น ๆ จะทำให้การแปลงล้มเหลว
  • ป้อนเกิน 8 ตัว: รหัส 8 หลัก (รวม alpha) ใช้ไม่ได้ เพราะหน้านี้คาดหวังเพียง 6 หรือ 3 หลัก
  • ลืม # แล้วคิดว่าต้องเพิ่ม: ที่จริง # เป็น optional เครื่องมือทำงานได้ทั้งแบบมีและไม่มี
  • เข้าใจผิดว่าสี 3 หลักเหมือน 6 หลัก: #fff เท่ากับ #ffffff (ขาวล้วน) แต่ #f0f ไม่เท่ากับ #ff00ff (ม่วง) การขยายโดยซ้ำตัวเลขเป็นกฎตายตัว

การประยุกต์ใช้จริงในงานพัฒนา

ค่า RGB ที่ได้จากหน้านี้มีประโยชน์ในหลายกรณี:

  • JavaScript และ Canvas: การเขียนสีใน <canvas> ต้องใช้ rgb(79, 70, 229) หรือ rgba() โดยที่ค่า RGB ต้องเป็นตัวเลข 0-255
  • CSS ที่ต้องการ opacity: เมื่อต้องการใช้ rgba() โดยแยกค่า RGB ออกจาก alpha เช่น color: rgba(79, 70, 229, 0.5)
  • การคำนวณความเปรียบต่าง: สูตร WCAG สำหรับ contrast ratio ใช้ค่าความสว่างสัมพัทธ์ (relative luminance) ที่คำนวณจากค่า RGB เชิงเส้น ซึ่งแปลงจาก 0-255 ได้โดยตรง
  • การผสมสีแบบโปรแกรม: ในการทำ gradient หรือ color interpolation ต้องใช้ค่า RGB เป็นตัวเลขเพื่อคำนวณหาค่ากลาง

ความสัมพันธ์ระหว่าง HEX และ RGB ในมาตรฐาน CSS

ทั้ง #4f46e5 และ rgb(79, 70, 229) ทำงานเหมือนกันใน CSS3 ขึ้นไป แต่มีความแตกต่างเชิง syntactic:

  • # notation: กะทัดรัดกว่า ใช้หน่วยความจำน้อยกว่า เหมาะกับค่าสีตายตัวใน stylesheet
  • rgb() notation: ยืดหยุ่นกว่า สามารถเปลี่ยนค่า opacity ด้วย rgba() หรือใช้ calc() เพื่อปรับค่าตามเงื่อนไข

เบราว์เซอร์จะแปลง #4f46e5 เป็นค่าภายในแบบ 24-bit (8-bit ต่อแชนเนล) เช่นเดียวกับการป้อน rgb() ดังนั้นทั้งสองรูปแบบให้ผลลัพธ์ที่เหมือนกันทุกประการในการแสดงผล

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

ถาม: จะเกิดอะไรขึ้นถ้าป้อน #xyz? ตอบ: ตัวอักษร x, y, z ไม่ใช่เลขฐานสิบหกที่ถูกต้อง เครื่องมือจะแสดงข้อความเตือนและไม่ทำการแปลง

ถาม: ทำไม #abc ถึงเท่ากับ #aabbcc ไม่ใช่ #a0b0c0? ตอบ: หลักการขยายตามมาตรฐาน CSS คือการซ้ำตัวเลขเดิม ไม่ใช่การเติม 0 เพื่อให้ได้ 6 หลัก การเติม 0 จะเปลี่ยนสีอย่างสิ้นเชิง เช่น #abc (aabbcc) กับ #a0b0c0 มีค่า RGB ต่างกันมาก

ถาม: ใช้หน้านี้แปลง HEX 8 หลักที่มี alpha ได้หรือไม่? ตอบ: ไม่ได้ หน้านี้รองรับเฉพาะ 6 หรือ 3 หลักเท่านั้น สำหรับ HEX 8 หลักต้องใช้เครื่องมือแปลง RGBA โดยเฉพาะ

ถาม: ค่า RGB ที่ได้มีโอกาสคลาดเคลื่อนไหม? ตอบ: ไม่มี การแปลงจากเลขฐานสิบหกเป็นฐานสิบเป็น deterministic และ reversible 100% ค่า RGB ที่ได้คือจำนวนเต็มที่แน่นอน

ถาม: ป้อน HEX แบบไม่มี # แล้วผลลัพธ์ต่างจากมี # หรือไม่? ตอบ: ไม่ต่าง เครื่องมือตัด # ออกโดยอัตโนมัติก่อนแปลง ดังนั้น #4f46e5 กับ 4f46e5 ให้ค่า RGB เท่ากันทุกประการ

ถาม: การป้อนตัวอักษรพิมพ์เล็กหรือใหญ่มีผลหรือไม่? ตอบ: ไม่มี #4F46E5 และ #4f46e5 ให้ผลลัพธ์เหมือนกัน เพราะระบบเลขฐานสิบหกไม่区分 case