NSDictionary中的32位无符号整数

时间:2011-01-01 09:35:36

标签: objective-c int unsigned

我正在开发LiveJournal.com客户端,我有一个问题。请你解释它是什么意思?

标量当安全性是usemask时相关。一个32位无符号整数,表示允许哪些用户的朋友组查看此帖子。将位0置1以允许任何已定义的朋友读取它。否则,为应允许读取的每个朋友组打开1-30位。位31保留。

如果我想查看例如id = 6的组,我需要在NSMutableDictionary中添加什么?我不明白......

1 个答案:

答案 0 :(得分:1)

安全实施通过授权或没有的朋友来阅读期刊/文本。

这假设最多有30个可能的组,因为bit-0是特定的,而bit-31是保留的。

安全性在unsigned int上编码,意思是32位,其中bit0到bit31具有特殊含义。

  • LSb,bit0,如果设置为1,则允许任何朋友进行读访问。
  • 如果bit0为0,则表示检查接下来的30位bit1到30,以查看组i(来自位i)是否具有读访问权限(位设置为1)或否(位设置为0)。

unsigned int可以表示为

  bit 31                     bit 0
  v                              v
  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

例如十进制值11(0 ... 01011或8 + 3)表示为

  00000000000000000000000000001011

其中位0,1和3设置为1,其他位设置为0.

因此,要检查朋友是否可以访问日记,请记下日记访问位,例如

  11000000000000000000000000001011

你看到第一位是1,所以所有组(所有朋友)都被授权。

如果访问权限是

  11000000000000000000000000001010

第一位为0,因此您必须根据上述访问权限检查组号。假设组号是1,您检查上面的访问

  11000000000000000000000000001010
                                1
                                ^
                        group one

您看到第1组已获得授权。如果你有

  11000000000000000000000000001000

第1组未经授权。

对于第3组和第30组,访问权限也是授权的:

  11000000000000000000000000001000
   *                          *

(MSb.bit31设置为1,但其值是保留的,所以你不应该打扰它的值)