基于数字的权限系统如何工作?

How do number based permission systems work?

这不是关于 Discord 的问题,而是关于 Discord 上的功能是如何实现的。

Discord 有一个系统,其中一组加在一起的数字可以代表一组选定的权限。我花了一些时间浏览互联网并使用 Discord 的 link 生成器来了解正在发生的事情,但我没有成功。

在下图中,可以看到我为一个小型机器人选择了一组权限,在生成的 URL 权限参数下提供了一个数字:

我不明白的是,(每个权限的)数字是如何分配的,以便将任何数字组合加在一起时没有 conflicting/ambiguous 结果?

此外,生成数字后,如何解释这些数字并将其转换回其原始含义?

每个单独的复选框对应一个位的位置。最后的数字是在每个打勾的位置写“1”,在每个non-ticked位置写“0”得到的二进制数。

例如,“管理频道”是 0b00010000 = 16,“查看审核日志”是 0b10000000 = 128,因此如果您同时勾选“管理频道”和“查看审核日志”,没有别的,您将得到0b10010000 = 144.

来源:https://discordapi.com/permissions.html#144