日期:2014-05-17  浏览次数:20820 次

关于枚举 在线等答案
有枚举如下
public enum Enm_AFN
    {
        /// <summary>
        /// 链路维持报
        /// </summary>
        H2F_LinkKeep = 0x2F,
        /// <summary>
        /// 测试报
        /// </summary>
        H30_Test = 0x30,
        /// <summary>
        /// 均匀时段水文信息报
        /// </summary>
        H31_ReportShiduan = 0x31
}
如何获取 枚举里面 的 0X2F 0X30 0X31
求大神 
我用 System.Enum.GetValues(Enm_AFN.GetType()) 
获取到的都是前面的  H2F_LinkKeep  H30_Test 这些值

------解决方案--------------------
把枚举强制转换成int
------解决方案--------------------

            int i = Convert.ToInt32(Enm_AFN.H2F_LinkKeep);
            MessageBox.Show(Convert.ToString(i,16));

------解决方案--------------------
private static string Tochinese(this Enum value) { return value.GetType().GetField(value.ToString()).GetValue() }

这样试试
------解决方案--------------------
没必要转换啊,你看到的只是名字是H2F_LinkKeep  H30_Test,实际的值就是0X2F 0X30 0X31
------解决方案--------------------
引用:
没必要转换啊,你看到的只是名字是H2F_LinkKeep  H30_Test,实际的值就是0X2F 0X30 0X31

+1
------解决方案--------------------
为啥我取到的是47,48,49....
------解决方案--------------------
枚举无需转换,使用的时候直接传递枚举值即可,这就好比你使用Int32的0和Byte的0,都是数字0。
你最好说明下为什么要使把枚举里的值都转换,一般都是用到哪个值就直接调用对应的值,就是参数类型不一致也很简单,只要枚举值调用前增加强制类型转换即可。
------解决方案--------------------
0X2F 0X30 0X31
 是16进制的表示,转成int出来就是47,48,49