代码之家  ›  专栏  ›  技术社区  ›  hiney_rowland

C#转换十六进制值

  •  1
  • hiney_rowland  · 技术社区  · 16 年前

    我正在从exchange邮箱读取分配的权限列表,这些值是通过AccessFlag属性返回的,该属性以十六进制返回20001,看起来2000表示READ权限,1表示FULL权限。

    我想做的是将该值显示为READ&已设置完全权限。

    3 回复  |  直到 16 年前
        1
  •  6
  •   ctacke    16 年前

    如果你想要的是字符串,你需要一个枚举。

    所以,如果你有这样的东西:

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

    然后,您可以转换返回值并使用ToString()

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

    结果会是这样的:

    Read, Full
    

    请注意,Flags属性对于此类枚举很重要。

        2
  •  3
  •   Binary Worrier    16 年前

    说实话,我不知道你在要求什么。

    如果你有一个AccessFlag的值,并且你想看看它是否有这两个标志中的任何一个,你可以使用位,例如。

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

    这就是你要找的吗?

        3
  •  0
  •   Bartek Tatkowski    16 年前

    您可以使用位XOR运算符过滤出所需的值,并从中推断出权限集。