Преобразование шестнадцатеричных значений в C#

StackOverflow https://stackoverflow.com/questions/492005

  •  20-08-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

И выйдет примерно следующее:

Read, Full

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

Другие советы

Честно говоря, я не совсем понимаю, о чем вы просите.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top