Преобразование шестнадцатеричных значений в C#
Вопрос
Я читаю список назначенных прав из почтового ящика обмена, эти значения возвращаются через свойство 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, чтобы отфильтровать нужные значения и вывести из них набор разрешений.