如何將十六進制顏色值(如#ff3ab4
)轉換爲像(128, 255, 0)
這樣的三元組RGB值?如何在Python中將十六進制顏色值轉換爲RGB
0
A
回答
1
>>> bit32_to_bytes = lambda x: [255 & (x >> 8 * i) for i in (0,1,2,3)]
>>> bit32_to_bytes(0xFFEE2200)
[0L, 34L, 238L, 255L]
一些說明:
>>> bin(0xFF00)
'0b1111111100000000' # this is string, not a number
>>> bin(0xFF00 >> 8) # shift right by 8 bits
'0b11111111' # leading zeros striped
>>> bin(0xA0FF00)
'0b101000001111111100000000' # 24-bit number
>>> bin(0xA0FF00 >> 8) # shift by 1 byte (drop the lowest byte)
'0b000000001010000011111111' # leading zeros added by myself!
>>> bin(255 & (0xA0FF00 >> 8)) # shift right (by 1 byte) and mask (get last byte)
'0b000000000000000011111111' # leading zeros added by myself!
掩蔽y = 255 & x
後,y
接收數x
低字節的值。 y = 255 & (x >> 8 * n)
- > Y = n個字節從X
2
爲什麼被省略前導零點的原因是因爲字符串被轉換爲數字,當你試圖表現爲一個字符串再次數量也不會顯示任何前導0,因爲沒有一定長度的數字不能知道它來自一個字符串,而字符串又有一定的長度。
在你的情況,我假設你想返回單獨的A,R,B和G部分作爲一個很好格式化的字符串。如果你想手動做到這一點,我將做到以下幾點:
def colorComponents(hexAsString):
def uniformLength(string):
return string[:2] + "".zfill(10-len(string)) + string[2:]
re = []
re.append(str(hex(int(hexAsString, 16) & int("0xFF000000", 16))))
re.append(str(hex(int(hexAsString, 16) & int("0x00FF0000", 16))))
re.append(str(hex(int(hexAsString, 16) & int("0x0000FF00", 16))))
re.append(str(hex(int(hexAsString, 16) & int("0x000000FF", 16))))
for i in range(len(re)):
re[i] = uniformLength(re[i])
return re
請注意,這不是最優化的性能代價以任何方式。 :) 你應該立即使用整數(如使用255而不是int(「0xFF000000」,16))。這種方式雖然你可以清楚地看到我使用的位掩碼將單獨的組件過濾掉爲十六進制數字。
我相當肯定有像字符串格式化程序這樣的東西,可以做數字表示爲漂亮的字符串的工作,但我從來沒有使用它們,所以我不能告訴你如何解決這些問題: )
編輯: 如果它是不清楚你的位掩碼是如何工作的,我用,這裏的(希望)簡單的例子: 假設你有2個字節在其位形式表示的數據:
bytes0 = 0011 0101
bytes1 = 0000 1111
&
運算符是一個按位運算符。
bytesAND = bytes0 & bytes1
bytesAND
現在看起來是這樣的:
0000 0101
相關問題
- 1. 如何十六進制顏色轉換爲RGB顏色(24位)
- 2. 將十六進制顏色字符串轉換爲RGB顏色
- 3. 將RGB顏色值轉換爲十六進制
- 4. 如何將RGB顏色值轉換爲C++中的十六進制值?
- 5. 如何從十六進制轉換顏色爲RGB
- 6. 將RGB轉換爲十六進制顏色
- 7. Python:如何將rgb或十六進制值轉換爲單色值
- 8. 將rgb轉換爲十六進制
- 9. 將RGB轉換爲十六進制
- 10. 將RGB轉換爲十六進制C++?
- 11. 如何將十六進制值轉換爲顏色名稱
- 12. 轉換顏色的十六進制值
- 13. 如何在Python中將十六進制轉換爲十進制?
- 14. 在Python中將十六進制值轉換爲十進制
- 15. RGB十六進制轉換
- 16. 將浮點值轉換爲灰度十六進制顏色值
- 17. 在UNIX shell腳本中將十六進制顏色轉換爲十進制RGB值
- 18. 將RGB顏色值轉換爲十進制
- 19. 將十六進制顏色代碼轉換爲顏色名稱
- 20. 將十進制BGR顏色轉換爲單獨的RGB十進制值
- 21. 如何將顏色轉換爲十六進制?
- 22. 如何將顏色代碼轉換爲十六進制?
- 23. 如何將十六進制轉換爲顏色代碼?
- 24. RGB轉換爲十六進制的PHP
- 25. 將RGBA值轉換爲十六進制顏色代碼
- 26. 將十六進制HTML顏色轉換爲Amiga colorregister十六進制(和後面)
- 27. 在VB6中將十六進制值轉換爲十進制值
- 28. 在PHP中將十六進制背景顏色轉換爲GIF
- 29. 在C#中將顏色名稱轉換爲十六進制
- 30. javascript十六進制顏色轉換成rgb函數
你並不需要將數字轉換成二進制,只需用'your_number >> 24' – georg