RGB 到十六进制语法

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)

Som*_*ude 5

该表达式将left的值r << 16 移动位,使其成为数字的第 16 到 23 位。r16

该表达式将leftg << 8的值移动位,使其成为数字的第 8 到 15 位。g8

那么表达式b不会移动任何内容,使其成为数字中的 0 到 7 位。

然后使用按位或|将所有这些数字组合成一个 32 位int值,其中第 24 到 31 位为零(假设您仅输入 到 范围内的值0作为255输入)。

这确实应该成为任何像样的教科书、课程或教程的一部分。