压缩图像的字节顺序
Byte order for packed images
因此http://en.wikipedia.org/wiki/RGBA_color_space,我了解到ARGB的字节顺序是,从最低地址到最高地址,BGRA,在某些解释中,在一个小端序机器上。
这是如何影响打包数据(如uint8_t ar[]={R,G,B,R,G,B,R,G,B}
)的命名约定的?
根据定义,小端序以相反的顺序存储数字的字节。如果您将它们视为字节数组,那么这并不是绝对必要的,但是任何模糊有效的代码库实际上都会将4个字节视为32位无符号整数。这将使软件闪电战的速度提高近4倍。
现在真正的问题是为什么。这源于这样一个事实,即当如上所述将像素视为32位int时,编码器希望能够以可预测的方式运行算术和移位。这取决于字节的顺序相反。
简而言之,这实际上并不奇怪,因为在小端序机器中,最后一个字节(最高地址)实际上是最高有效字节,而第一个是最低有效字节。因此,像这样的字段自然会按相反的顺序排列,因此当被视为数字时(作为数字,它将显示为ARGB,但作为字节数组,它将出现BGRA),这是正确的方式。
如果这不清楚,我很抱歉,但我希望它能有所帮助。如果你不理解或我遗漏了什么,请评论。
如果像指定的那样将数据存储在字节数组中,则使用基本上RGB反转的BGR格式:
bgr颜色空间
相关文章:
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 当比特(而不是字节)的顺序至关重要时的持久性
- C++ 替换字节数组中项的顺序
- C++ int* 和 char* 字节顺序已交换
- 交换未定义数据类型中的字节顺序
- 以随机可重现的顺序生成非重复字节的快速方法
- 为什么在未由语言本身定义的结构字节中的位字段顺序
- winsock上的蓝牙,如何删除字节顺序标记
- 将网络字节顺序(大字节序)转换为小字节序
- 将主机字节顺序转换为网络字节顺序有时会导致奇怪的结果
- 当在网络字节顺序中放置双精度时,为什么它是在 4 字节块中完成的
- 使用mysql本机函数进行字节顺序转换
- C++:如何交换wchar_t的字节顺序
- reinterpret_cast接收端的'serializing'数据、字节顺序和对齐方式
- 到Arduino的串行通信的字节顺序
- 使用不带Unicode字节顺序标记的iconv进行字符转换
- 从Byte*到unsigned int的memcpy正在反转字节顺序
- 忽略C++中的字节顺序标记,从流中读取
- 为什么 file.write() 不按照我给出的顺序存储字节?C++
- iPhone TCP-IP字节顺序映射