You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中如何从整型像素值中分离R、G、B颜色分量

像素值RGB分量拆分方案

核心逻辑

24位RGB像素值的位布局(从高位到低位)为:8位R分量 → 8位G分量 → 8位B分量,拆分只需要通过「位右移」+「按位与」两个基础位运算实现,其中0xFF是8位全1的掩码,作用是只保留数值最右侧8位的有效内容。

拆分步骤

  • B分量(最右侧8位):直接将原像素值和0xFF做按位与运算
  • G分量(中间8位):先将原像素值右移8位,让G分量落到最右侧8位区间,再和0xFF做按位与
  • R分量(高8位):先将原像素值右移16位,让R分量落到最右侧8位区间,再和0xFF做按位与

示例验证

我们用具体数值测试:假设输入像素值为十六进制0xFFAABB(对应十进制16755387)

R = (0xFFAABB >> 16) & 0xFF = 0xFF = 255
G = (0xFFAABB >> 8) & 0xFF = 0xAA = 170
B = 0xFFAABB & 0xFF = 0xBB = 187

常见语言实现示例

Python

pixel = 0xFFAABB
r = (pixel >> 16) & 0xFF
g = (pixel >> 8) & 0xFF
b = pixel & 0xFF

JavaScript

注意JS默认数值是有符号的,需要先转无符号整数避免右移异常

const pixel = 0xFFAABB
const r = (pixel >>> 16) & 0xFF
const g = (pixel >>> 8) & 0xFF
const b = pixel & 0xFF

C/C++

uint32_t pixel = 0xFFAABB;
uint8_t r = (pixel >> 16) & 0xFF;
uint8_t g = (pixel >> 8) & 0xFF;
uint8_t b = pixel & 0xFF;

内容的提问来源于stack exchange,提问作者nanu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 02:27:03