高效的RGB类型到整型的转换
2009-07-08 23:07
190 查看
一般我们在做RGB与Int的转换时可能喜欢这样做(不用系统函数):
int rgb = 202 + 69 * 256 + 137 * 256 * 256;
int b = rgb / (256 * 256);
int g = (rgb - b * 256 * 256) / 256;
int r = (rgb - b * 256 * 256 - g * 256);
这样做的原因很简单:人脑容易理解,但是计算机可就惨了,因为它不好理解(=_=!),它平白无故的做了N倍的活。下面的做法才是计算机喜欢的(我以前学的移位运算,总是没用武之地,这回终于用上了,哈哈):
uint ParseRGB(Color color)
{
return (uint)(((uint)color.B << 16) | (ushort)(((ushort)color.G << 8 ) | color.R));
}
Color RGB(int color)
{
int r = 0xFF & color;
int g = 0xFF00 & color;
g >>= 8;
int b = 0xFF0000 & color;
b >>= 16;
return Color.FromArgb(r, g, b);
}
int rgb = 202 + 69 * 256 + 137 * 256 * 256;
int b = rgb / (256 * 256);
int g = (rgb - b * 256 * 256) / 256;
int r = (rgb - b * 256 * 256 - g * 256);
这样做的原因很简单:人脑容易理解,但是计算机可就惨了,因为它不好理解(=_=!),它平白无故的做了N倍的活。下面的做法才是计算机喜欢的(我以前学的移位运算,总是没用武之地,这回终于用上了,哈哈):
uint ParseRGB(Color color)
{
return (uint)(((uint)color.B << 16) | (ushort)(((ushort)color.G << 8 ) | color.R));
}
Color RGB(int color)
{
int r = 0xFF & color;
int g = 0xFF00 & color;
g >>= 8;
int b = 0xFF0000 & color;
b >>= 16;
return Color.FromArgb(r, g, b);
}
相关文章推荐
- 高效的RGB类型到整型的转换
- 高效的将整型类型转换为字符串的方法
- 如何将整型数转换为枚举类型以方便在switch中的使用
- 十位以上长整型或double类型数强制转换为16进制字符串
- 求助!!java!! 求一个将 1维整型数组转换为字符串类型的方法!
- 隐式类型转换和整型提升
- C中字符类型和整型的转换
- 解决vs2013 error C4308: 负整型常量转换为无符号类型问题(转载)
- mysql 时间转换 长整型时间 时间戳类型时间
- C#中RGB颜色值与整型值的转换
- C++中将整型数与字符串型之间的类型转换
- operator int () const; // 类型转换操作符函数(转整型)
- double类型转换int整型四舍五入简单方法
- 将整型数据转换为string类型
- 在ArcGIS字段计算器中使用Python脚本将Text类型转换成整型
- 数据类型转换(浮点数与整型)
- C语言中的数值类型转换:整型提升/寻常算术变化/截断/强制类型转换
- C整型升级和寻常算术转换以及数据类型转换
- 原创“广告”贴:推广在字符串转整型的类型转换中,strtol的使用
- ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】