好的,暂时忽略第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 为基数。