gpt4 book ai didi

c# - 如何将带有标志属性的枚举格式化为十六进制值?

转载 作者:行者123 更新时间:2023-11-30 16:12:10 25 4
gpt4 key购买 nike

我尝试使用枚举 ToString 方法显示枚举值。枚举具有 Flags 属性。

有些值与枚举值的任何组合都不匹配。
在本例中,ToString 返回十进制数字,但我想将其显示为十六进制字符串。

使用 ToString("X8") 将始终返回十六进制值。

我尝试了 Enum.IsDefined,但它只对非组合值返回 true。

示例:

0x00000201 -> "XXt, TSW_AUTO_DETECT"   (known values)
0x00010108 -> "00010108" (unknown value)

问:如何“ToString”未知枚举值作为十六进制值?

最佳答案

您可以检查该值是否设置了除标志枚举的总位掩码之外的任何其他位。如果是,则返回数字,否则返回正常的 tostring:

public static string GetDescription(EnumName value)
{
var enumtotal = Enum.GetValues(typeof(EnumName)).Cast<int>().Aggregate((i1, i2) => i1 | i2); //this could be buffered for performance
if ((enumtotal | (int)value) == enumtotal)
return value.ToString();
return ((int)value).ToString("X8");
}

关于c# - 如何将带有标志属性的枚举格式化为十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23341136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com