【发布时间】:2012-12-18 23:57:48
【问题描述】:
因为十六进制经常用于表示诸如 RGBA 颜色模型数据之类的东西,所以我试图找出如何将像 0x11AA22BB 这样的大 十六进制字符串 分割成单独的字节。 (所以,本质上是 0x11、0xAA、0x22 和 0xBB 块……)。我知道每个十六进制数字可以直接用四位表示。但是,我也不知道如何将一串比特分成更小的组。
所以,我相信这可能有一个简单的答案。我确定它可能与将其转换为单字节数组或使用按位运算符或其他东西有关,但我无法弄清楚。我知道还有一个字节顺序问题以及字节的组织方式(RGBA、ARBG、ABGR 等),但现在我只是想了解如何进行拆分,以便对这个怎么运作。我正在使用 C++,但我认为这可能不一定特定于该语言。
所以,重申一下; 如何将 0x11AA22BB 这样的大十六进制字符串拆分为 0x11、0xAA、0x22、0xBB?
【问题讨论】:
-
“十六进制数”是什么意思?一个字符串?
-
计算机中没有“十六进制数”之类的东西。你有一个二进制值的文本表示。您解析字符串并进行数学运算。或者你的意思是你有一个
int并且想要读取每个字节? -
我已将术语更改为“字符串”,感谢您提供的信息。我确实意识到计算机中的所有数字都是二进制的表示。
标签: language-agnostic numbers hex byte bit-manipulation