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

问题描述 投票:0回答:1

我有一个控制台应用程序需要接受参数。 该应用程序使用 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

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

c# parsing command-line-arguments command-line-parser
1个回答
1
投票

从库的源代码来看,它内部使用方法

Convert.ChangeType
来执行转换,不幸的是它不支持十六进制数字。请参阅:https://github.com/commandlineparser/commandline/blob/master/src/CommandLine/Core/TypeConverter.cs#L63

您最好的选择是公开一个字符串,并使用

UInt32.TryParse
和正确的 NumberStyles 标志来自行执行转换。

© www.soinside.com 2019 - 2024. All rights reserved.