高效的RGB类型到整型的转换

一般我们在做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);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值