【发布时间】:2015-12-14 09:41:03
【问题描述】:
假设我们有十六进制 0x83,它具有二进制表示:
1 0 0 0 0 0 1 1 <- binary
-------------------------
8 7 6 5 4 3 2 1 <- position
-------------------------
13 12 11 10 03 02 01 00 <- mapping value
如果指定位置有“1”,则显示的值将放置在输出数组中。在上面的示例中,输出数组应该是:
unsigned char output[] = { 0x13, 0x01, 0x00 }
另一方面,如果输入为 0xFF,则输出应为:
unsigned char output[] = { 0x13, 0x12, 0x11, 0x10, 0x03, 0x02, 0x01, 0x00 }
我知道我可以循环输入,但如果可能的话,我想以“更智能的方式”(可能是移位或某种字典)来完成。
【问题讨论】:
-
除了大量的
if语句之外,没有字节移位的循环是唯一的方法...... -
什么是映射值?看起来它们是某种基于 4 的系统?就像第 9 位一样,它会是“20”?
-
只有8个八位,没有更多了。
标签: objective-c arrays hex