在 python 中将十六进制转换为 15 位 RGB 值
Convert hex to 15 bit RGB value in python
我是 python 的初学者,想编写一个程序将十六进制 RGB 值转换为 15 位 RGB 值(每种颜色 5 位)我听说可以通过位移位来完成,但我不明白我怎么也没有在互联网上找到任何有用的东西有人可以帮助我
如果您手动执行此操作(例如,为了家庭作业),请这样想问题:
如果您有颜色的六字符十六进制表示(例如"7FD87F"
),它由 RGB 组件 R: 7F、G: D8、B: 7F 组成。
两个十六进制数字可以编码 256 种不同的状态 (16^2 = 256),因此这些分量中的每一个都是 8 位大小 (256 = 2^8)。
您想将您的值转换为一种颜色 space,其中每个分量以 5 位表示。这样做的方法是丢弃每个组件的三个最低有效位。例如:
0b10101010 => 0b10101
正如您正确提到的那样,您可以通过位移来完成此操作。然后您需要重新组合组件。作为提示,以下是我将原始 8 位组件重新组合为单个 24 位表示的方法:
(R << 16) + (G << 8) + (B << 0)
# or just B since a shift by zero is equivalent to
# multiplying by 2^0 is
# multiplying by 1 is
# the multiplicative identity
所以你的算法草图,假设你从一个十六进制字符串而不是一个整数开始:
- 将十六进制字符串拆分为单独的颜色分量
- 将字符串表示形式转换为数字表示形式
- 位移分量
- 将 5 位分量重新组合成 15 位表示
此外,第 1 步和第 2 步可以与一些位掩码和更多的位移互换。
我是 python 的初学者,想编写一个程序将十六进制 RGB 值转换为 15 位 RGB 值(每种颜色 5 位)我听说可以通过位移位来完成,但我不明白我怎么也没有在互联网上找到任何有用的东西有人可以帮助我
如果您手动执行此操作(例如,为了家庭作业),请这样想问题:
如果您有颜色的六字符十六进制表示(例如"7FD87F"
),它由 RGB 组件 R: 7F、G: D8、B: 7F 组成。
两个十六进制数字可以编码 256 种不同的状态 (16^2 = 256),因此这些分量中的每一个都是 8 位大小 (256 = 2^8)。
您想将您的值转换为一种颜色 space,其中每个分量以 5 位表示。这样做的方法是丢弃每个组件的三个最低有效位。例如:
0b10101010 => 0b10101
正如您正确提到的那样,您可以通过位移来完成此操作。然后您需要重新组合组件。作为提示,以下是我将原始 8 位组件重新组合为单个 24 位表示的方法:
(R << 16) + (G << 8) + (B << 0)
# or just B since a shift by zero is equivalent to
# multiplying by 2^0 is
# multiplying by 1 is
# the multiplicative identity
所以你的算法草图,假设你从一个十六进制字符串而不是一个整数开始:
- 将十六进制字符串拆分为单独的颜色分量
- 将字符串表示形式转换为数字表示形式
- 位移分量
- 将 5 位分量重新组合成 15 位表示
此外,第 1 步和第 2 步可以与一些位掩码和更多的位移互换。