第 N 位到位图转换

Nth Bit to BitMap Conversion

我正在从这里读取第 N 位到位图的转换 BitMaps

我想了解他们如何将第 n 位(0-9 范围内的整数)映射到位图(0 和 1),下面是从那里复制的代码:

0________10________20________30________40________50________60__64
1234567890123456789012345678901234567890123456789012345678901234  n-th bit
0100001000010000000000000001000100000010110000000100100000000100  bit map

此外,他们正在转换 '82x is binary '1000 0010' ,但是当我计算出 82 的二进制时,它会变成 1010010.

任何帮助将不胜感激。

谢谢, 阿比特

在您的示例中,82x 是一个十六进制值。 82十六进制的二进制值为1000 0010

好的,暂时忽略第n位数据。假设示例只有位图。

0100001000010000000000000001000100000010110000000100100000000100

从位图中可以看出第一个字段不在消息中(因为位图中的第一个位是0),而第二个字段存在于消息中(因为第二个位是1),等等。假设你想知道第 56 个字段是否在消息中,你必须计算位图中的位,直到你到达第 56 位,然后查看它是 0 还是 1。

如果他们还显示了位图中位的位置,那么这个例子会更容易理解,这样你就不必计算位了。报文中的第n位数据就是给你算的。让我们先看看前 9 个第 n 个值。

123456789
0100001000010000000000000001000100000010110000000100100000000100

如您所见,第 n 位数据仅计算前 9 位。你可以很容易地看到第 6 位是 0,第 7 位是 1,不计算位。那么第10位呢

示例无法像这样显示第 10 位

12345678910
0100001000010000000000000001000100000010110000000100100000000100

因为10是两位数,位图中第10位和第11位都在上面。解决这个问题,可以这样竖写10

         1
1234567890
0100001000010000000000000001000100000010110000000100100000000100

并把例子写成

0000000001111111111222222222233333333334444444444555555555566666  n-th  
1234567890123456789012345678901234567890123456789012345678901234  bit
0100001000010000000000000001000100000010110000000100100000000100  bit map

有些人会这样写

0        1         2         3         4         5         6      n-th
1234567890123456789012345678901234567890123456789012345678901234  bit
0100001000010000000000000001000100000010110000000100100000000100  bit map

你给出的例子,第 n 位信息的方式略有不同,但意思是一样的。

现在,回答你问题的第二部分,为什么 82x 转换为 100000010? 82 是以 16 为基数而不是以 10 为基数。