不确定这是否是正确的地方,但我相信在你们中间有人能够给我一个很好的见解:
考虑iBeacon有效负载的this描述。 据我所知,有一个UUID可以统一一组信标,还有一个' minor'和'主要'区分该组内信标的值。
现在,我想将iBeacon协议用于我的某个应用程序。我必须使用该UUID来唯一标识我的应用程序,只留下次要和主要值,以某种方式唯一标识该应用程序的每个运行实例。
次要和主要参数都是
(uint16_t)
我从评论中理解的是0到65,535之间的数字。
如何以最佳方式使用这两个数字来创建尽可能多的唯一数字?
非常感谢你的考虑。
答案 0 :(得分:1)
这里要理解的关键是,使用n
二进制数字/位将允许您表示2^n
个不同的数字。一位可以表示两个值(0或1)。每增加一位,就可以将之前代表的金额翻倍。
0
1
,即零到一00
01
10
11
,即零到三000
001
010
... 110
111
,即零到七 uint16_t
为您提供16位,因此您可以表示的数字量固定为2 ^ 16。
两个uint16_t
将为您提供32位,这可以让您代表2 ^ 32 = 4,294,967,296 =大约40亿个不同的数字。
没有聪明的方法可以将比特拼接成更小的块,从而增加这个数量。如果我将16位分成例如10位部分和6位部分,则10位部分将给出2 ^ 10个数字,6位部分将给出2 ^ 6个数字。总的来说,这仍然是(2 ^ 10)*(2 ^ 6)= 2 ^(10 + 6)= 2 ^ 16个不同的数字。