-1

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

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

0________10________20________30________40________50________60__64
1234567890123456789012345678901234567890123456789012345678901234  n-th bit
0100001000010000000000000001000100000010110000000100100000000100  bit map

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

任何帮助将不胜感激。

谢谢, 阿皮特

4

2 回答 2

1

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

于 2015-04-10T22:02:44.453 回答
1

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

0100001000010000000000000001000100000010110000000100100000000100

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

如果他们还向您显示位图中位的位置,该示例将更容易理解,因此您不必计算位。消息中的第 n 位数据只是为您计算位。让我们先看看前 9 个 n-th 值。

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 为基数。

于 2015-04-10T22:08:48.080 回答