2016-02-05 3 views
-1

У меня есть такие роли & Hexnumbers:Hexadecimal Роль системы

0x1 - Employee | 
0x2 - Pensioner | 
0x4 - RoleOne | 
0x10 - RoleTwo | 
0x20 - RoleThree | 
0x80 - RoleFour | 
0x100 - RoleFive | 
0x1000 - Administrator 

Теперь у меня есть десятичное число 4353 (что означает для работника ролей, rolefive & администратора).

Мой вопрос в том, с какой техникой я могу получить эти роли из своего десятичного числа 4353?

ответ

0

Вы можете представить каждую из этих «ролей» как представленную конкретным битом, например. Employee = 0x1 = bit 0, Pensioner = 0x2 = bit 1 и т. Д. Таким образом, вы можете просто использовать побитовые операторы для проверки каждой «роли», например.

if ((person & Employee) != 0) 
    // person has Employee bit set 
if ((person & Pensioner) != 0) 
    // person has Pensioner bit set 
// ... 

Заметим, что это предполагает, что C-подобные операторы, где & означает "побитовое И". У вашего предпочтительного языка программирования может быть другой оператор или даже функция для выполнения этой операции.