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