题目

输入 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