如何将十六进制颜色值(如#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