C # Преобразование шестнадцатеричных значений - PullRequest
1 голос
/ 29 января 2009

Я читаю список назначенных прав из почтового ящика обмена, эти значения возвращаются через свойство AccessFlag, которое возвращает 20001 в шестнадцатеричном формате, похоже, что 2000 представляет разрешение READ, а 1 представляет разрешение FULL.

То, что я хочу сделать, это отобразить это значение в качестве установленных разрешений READ & FULL.

Ответы [ 3 ]

6 голосов
/ 29 января 2009

Если вы хотите в качестве строки, вам нужно перечисление.

Итак, если у вас есть что-то вроде этого:

[Flags]
enum Permissions
{
  Read = 0x20000,
  Full = 0x00001
}

Затем вы можете привести свое возвращаемое значение и использовать ToString ()

string val = ((Permissions )myValue).ToString();

И получится что-то вроде этого:

Read, Full

Обратите внимание, что атрибут Flags важен для перечисления этого типа.

3 голосов
/ 29 января 2009

Если честно, я не уверен, что вы просите.

Если у вас есть значение из AccessFlag, и вы хотите увидеть, имеет ли оно какой-либо из этих флагов, вы можете использовать побитовое значение, например

If((accessFlag & 0x2000) != 0) // It has FULL
If((accessFlag & 0x1) != 0) // It has READ
If((accessFlag & 0x2001) != 0) // It has READ AND FULL

Это то, что вы ищете?

0 голосов
/ 29 января 2009

Вы можете использовать побитовый оператор XOR, чтобы отфильтровать нужные вам значения и получить из них набор разрешений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...