命令行分析器库:将十六进制字符串解析为UInt32

时间:2015-08-25 16:53:20

标签: c# parsing command-line-arguments command-line-parser

我有一个需要接受参数的控制台应用程序。该应用程序使用Command Line Parser Library来解析参数。

应用程序需要能够接受十六进制参数,并将它们转换为无符号整数。

例如,如果这是Option类

public class CommandLineOptions
{
   [Option('l', "crcLocation", Required = false, HelpText = "Address where the CRC will be inserted.  Must be outside of the application image")]
   public UInt32 CrcLocation { get; set; }
}

然后应用程序应该可以使用

启动
app.exe -l 0x0000000F

因此将CrcLocation设置为15

有没有办法让命令行解析器库从十六进制字符串转换为整数,还是应用程序需要手动执行?

1 个答案:

答案 0 :(得分:1)

从库的源代码,它在内部使用方法Convert.ChangeType来执行转换,遗憾的是它不支持十六进制数。请参阅:https://github.com/gsscoder/commandline/blob/master/src/CommandLine/Core/TypeConverter.cs#L66

最好的办法是公开字符串并使用UInt32.TryParse和正确的NumberStyles标志来自行执行转换。