【问题标题】:C# Converting Hex ValuesC# 转换十六进制值
【发布时间】:2010-10-04 06:27:13
【问题描述】:

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

我想要做的是将该值显示为 READ & FULL 权限集。

【问题讨论】:

  • 我假设上面的20001应该是2001?

标签: c# hex


【解决方案1】:

您可以使用按位异或运算符过滤掉您需要的值并从中推断出权限集。

【讨论】:

    【解决方案2】:

    如果你想作为一个字符串,你需要一个枚举。

    所以如果你有这样的事情:

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

    然后你可以转换你的返回值并使用 ToString()

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

    结果会是这样的:

    Read, Full
    

    请注意,Flags 属性对于这种类型的枚举很重要。

    【讨论】:

    • 您错过了代码 sn-p 中 ToString() 调用中的 ()。
    • +1: 可爱的把戏 :) 它为我显示“已读,已读完”(我必须尝试一下)
    • 感谢这是一个非常好的解决方案。
    【解决方案3】:

    说实话,我不确定你要的是什么。

    如果您有来自 AccessFlag 的值,并且您想查看它是否具有这些标志中的任何一个,您可以使用按位和例如

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

    这就是你要找的吗?

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 2018-11-18
      • 2017-07-31
      • 2013-07-20
      • 2012-06-17
      • 1970-01-01
      • 2014-02-05
      相关资源
      最近更新 更多