Если вы выполняете логическую операцию И над значением, например 0x0000000000000001 для «ViewListItems», которое содержится в маске, то вы получите само значение (или 1).Если вы выполните логическое И для значения, не входящего в эту маску, например значение «UseClientIntegration» 0x0000001000000000, то вы получите ноль (0).Это то, что вы можете даже протестировать в научном режиме приложения калькулятора Windows - возможно, сначала преобразовав маску в шестнадцатеричный формат, например, взяв пример 4611686844973976575 из базового 10 в 400000C072040BFF в шестнадцатеричном (основание 16).
Чтобы извлечь все значения из маски, вы должны проверить начальное значение по всем возможным значениям.Если все известные значения разрешений задокументированы на этой странице, тогда ответ на ваш вопрос - да.Я не знаю, на каком языке вы можете этого достичь, но основная идея в C #:
bool CheckMask( long Mask, long TestPermission ) {
return (Mask && TestPermission) > 0;
}
long mask = 4611686844973976575;
const long ViewListItems = 0x0000000000000001;
bool HasPermission_ViewListItems = CheckMask(mask, ViewListItems);
// HasPermission_ViewListItems is true
const long UseClientIntegration = 0x0000001000000000;
bool HasPermission_UseClientIntegration = CheckMask(mask, UseClientIntegration);
// HasPermission_UseClientIntegration is false