高数据类型存取低数据类型,如int存储uchar
数据通信领域为了提高效率和节省空间,经常传输具体的字节数。
图像的红绿蓝值一般是uchar类型0~255,即1个字节。那么可以用int类型存红绿蓝(4个字节足够存3个字节的内容)。
//char占1个字节,int占4个字节,足够存3个char uchar r = 15; uchar g = 162; uchar b = 255; int color = 0; //r、g、b存入int color |= r; //低8位 color |= g << 8; //中8位 color |= b << 16; //高8位 std::cout << color << std::endl; //从int读出r、g、b uchar r1 = color & 0xFF; //1个F就是4个1(即1111)。如果要取16位,则用0xFFFF。 uchar g1 = (color >> 8) & 0xFF; uchar b1 = (color >> 16) & 0xFF; std::cout << (int)r1 << " " << (int)g1 << " " << (int)b1 << std::endl;//仅为了展示结果才转的int
参考
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-03-11 VS开发Qt项目注意事项
2020-03-11 查找与绘制轮廓findContours()、drawContours()(OpenCV案例源码contours2.cpp解读)