我正在阅读Python中的某些内容。值以奇怪的格式出现。文档说:
Color is represented by a single value from 0 to 8355711. The RGB(r,g,b) function calculates ((R*127 x 2^16) + (G*127 x 2^8) + B*127), where R, G and B are values between 0.00 and 1.00
Som,红色的值为16712965
我很想知道如何解开'那些价值作为一个元组或其他东西,但我正在努力与数学。如果这是不可能的,那么以某种方式将该值转换为rgb值的方法会很棒。请帮忙!感谢
答案 0 :(得分:1)
注意公式中的2 ^ 8和2 ^ 16,这表明您可以使用类似于C中的右移的东西。将输入数除以2 ^ 8 = 256相当于8位右移。这里要注意的另一点是你的R,G,B输出值是实数。因此,您希望在计算过程中使用float
函数。
c = 8355711
print 'input colour', c
# conversion to RGB format
B = float( c % 256 )/127.0
c = c / 256
G = float( c % 256)/127.0
c = c / 256
R = float( c % 256)/127.0
print R, G, B
# reverse calculation for verifying the result
colour = int((R*127 * 65536) + (G*127 * 256) + B*127)
print colour
答案 1 :(得分:1)
你的文字错误
那么你的源和目标颜色格式究竟是什么?
你究竟想要什么?
不是C ++中的python编码器,它看起来像这样:
// 8(7 used) bit per channel
double R=double(col>>16)/127.0;
double G=double(col>> 8)/127.0;
double B=double(col )/127.0;
// 8 bit per channel
double R=double(col>>16)/255.0;
double G=double(col>> 8)/255.0;
double B=double(col )/255.0;
x>>n
表示值为x的算术位右移(填充零到MSB位)n位
x/(2^n)
如果您需要不同的转化,则必须指定它。