题目
输入 RGB 三个颜色分量(0~255),通过位移与按位或操作打包为一个 24 位十六进制颜色值,再通过位运算解包还原各通道值。
输入格式:输入一行包含三个整数 r g b,取值范围在 0~255。
输出格式:第一行输出十六进制颜色编码(如 0xFF8000);第二行输出解包还原的三个分量,空格分隔。
数据范围与约定:0 ≤ r, g, b ≤ 255。
思路与算法
1. 位打包操作pack = (r << 16) | (g << 8) | b 将三个字节拼装进单一整数。
2. 掩码解包
通过 (pack >> 16) & 0xFF 截取高位,实现无损还原。
完整程序
r, g, b = map(int, input().split())
# RGB 三通道位运算打包为一个 24 位整数
pack = (r << 16) | (g << 8) | b
print(f'0x{pack & 0xFFFFFF:06X}')
# 位运算掩码解包还原各通道值
r2 = (pack >> 16) & 0xFF
g2 = (pack >> 8) & 0xFF
b2 = pack & 0xFF
print(f'{r2} {g2} {b2}')运行示例
输入:
255 128 0输出:
0xFF8000
255 128 0