我有CMYK颜色值(0,0.58,1,0)。现在我必须使用C#转换为它的Integer等价物。我认为可以使用Bitwise运算符但不确定。
请帮助我如何实现同样的目标。
谢谢, 爬完
答案 0 :(得分:2)
试试这个:
float c = 0.0;
float y = 0.58;
float m = 1.0;
float k = 0.0;
uint intColor = (uint)(c * 255) << 24;
intColor += (uint)(y * 255) << 16;
intColor += (uint)(m * 255) << 8;
intColor += (uint)(k * 255) << 0;
这里intColor
将是一个32位无符号整数,分别包含颜色的C,Y,M和K分量的字节值。要从整数转换回组件,只需反转所有操作及其顺序:
float c = ((intColor & 0xFF000000) >> 24) / 255.0f;
float y = ((intColor & 0x00FF0000) >> 16) / 255.0f;
float m = ((intColor & 0x0000FF00) >> 8) / 255.0f;
float k = ((intColor & 0x000000FF) >> 0) / 255.0f;