题目

位运算或掩码:用 unsigned 存 RGB 分量

思路

本题把 RGB 三个 0~255 的分量打包进一个整数,并能解包还原。 打包:color = (r<<16)|(g<<8)|b;解包:用移位和掩码取出各字节。写入前先 clamp 到 0~255。

解题分析

RGB 各 8 位打包:(r<<16)|(g<<8)|b,解包用移位和 &0xFF。输出十六进制便于肉眼检查位布局。

完整程序

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int r = 255, g = 128, b = 0;
        int pack = (r << 16) | (g << 8) | b;
        System.out.printf("0x%06X%n", pack & 0xFFFFFF);
        System.out.println(((pack >> 16) & 0xFF) + " " + ((pack >> 8) & 0xFF) + " " + (pack & 0xFF));
    }
}

运行示例

输出:

0xFF8000
255 128 0