2 c++
我必须解决一个需要将 RGB 转换为 Hex 的问题。我在网上找到了解决方案,但我不明白常量 16 和 8 的用途。有人可以向我解释一下吗?谢谢
#include <iostream>
#include <sstream>
using namespace std;
int main(){
stringstream ss;
int r,g,b;
cout << "testing" << endl;
cin >> r >> g >> b;
ss << "#" << hex << (r << 16 | g << 8 | b);
cout << ss.str();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该表达式将left的值r << 16 移动位,使其成为数字的第 16 到 23 位。r16
该表达式将leftg << 8的值移动位,使其成为数字的第 8 到 15 位。g8
那么表达式b不会移动任何内容,使其成为数字中的 0 到 7 位。
然后使用按位或|将所有这些数字组合成一个 32 位int值,其中第 24 到 31 位为零(假设您仅输入 到 范围内的值0作为255输入)。
这确实应该成为任何像样的教科书、课程或教程的一部分。
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |