สิ่งที่ค่อนข้างบ่อยโดยเฉพาะใน X11 ที่เกี่ยวข้อง (ทรัพยากร X, Roxterm ธีม, ฯลฯ ) ผมเห็นสีที่ระบุเป็นตัวเลข 48 บิต: #2e2e34343636
, #cccc00000000
แทนปกติ 24 บิตและ#2e3436
#cc0000
บิตพิเศษที่ใช้ทำมีอะไรบ้าง?
สิ่งที่ค่อนข้างบ่อยโดยเฉพาะใน X11 ที่เกี่ยวข้อง (ทรัพยากร X, Roxterm ธีม, ฯลฯ ) ผมเห็นสีที่ระบุเป็นตัวเลข 48 บิต: #2e2e34343636
, #cccc00000000
แทนปกติ 24 บิตและ#2e3436
#cc0000
บิตพิเศษที่ใช้ทำมีอะไรบ้าง?
คำตอบ:
ฉันพบคำตอบในเอกสารประกอบ Xlib ภายใต้ "Color strings" ดูเหมือนว่า Xlib ใช้ค่าสี 16 บิตสำหรับสีจริง:
ข้อกำหนดสตริงอุปกรณ์ RGB
[... ] สนับสนุนไวยากรณ์เก่ากว่าสำหรับอุปกรณ์ RGB แต่ไม่สนับสนุนให้ใช้อย่างต่อเนื่อง ไวยากรณ์เป็นอักขระเครื่องหมายเริ่มต้นที่คมชัดตามด้วยข้อกำหนดคุณสมบัติตัวเลขในรูปแบบใดรูปแบบหนึ่งต่อไปนี้:
#RGB (4 bits each) #RRGGBB (8 bits each) #RRRGGGBBB (12 bits each) #RRRRGGGGBBBB (16 bits each)
R, G และ B แสดงเลขฐานสิบหกหลักเดียว เมื่อระบุน้อยกว่า 16 บิตแต่ละรายการจะแสดงบิตที่สำคัญที่สุดของค่า (ต่างจากไวยากรณ์“ rgb:” ซึ่งมีการปรับขนาดค่า) ตัวอย่างเช่นสตริง“
#3a7
” เหมือนกับ“#3000a0007000
”
ฉันไม่สามารถพูดคุยกับการใช้งาน X11 ของพวกเขาได้ แต่โดยทั่วไปแล้ว: ค่าสีเพิ่มเติมที่ไม่สามารถสร้างได้ที่ความลึกบิตและช่องอัลฟาที่น้อยกว่า
จากตัวอย่างที่คุณให้พวกเขาไม่ได้ถูกใช้เลยเนื่องจากค่า 24 บิตนั้นถูกทำซ้ำเพียงเล็กน้อย (เช่นการฝึกใช้อักขระ hex เพียง 3 ตัวเพื่อแสดงสี "websafe" ดังนั้น # c00 จึงมีความหมายเหมือนกับ # cc0000 หรือ 204 , 0,0, ขยายเป็น # cccc00000000)
โดยปกติแล้วค่า 32 บิตจะใช้ไบต์สุดท้ายสำหรับช่องอัลฟา (โปร่งใส) ฉันเดาว่าเป็นไปได้ว่าค่า 48 บิตกำลังใช้สี 24 บิตพร้อมอัลฟาอิสระต่อสี แต่ตัวอย่างที่คุณให้ไม่สนับสนุนสิ่งนี้