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

本文关键字:字符串 UInt32 十六进制 命令行 | 更新日期: 2023-09-27 18:09:51

我有一个需要接受参数的控制台应用程序。该应用程序使用命令行解析器库来解析参数。

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

例如,如果这是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

是否有一种方法可以使命令行解析器库从十六进制字符串转换为整数,或者应用程序需要手动进行转换?

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

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

你最好的选择是公开一个字符串,并使用UInt32.TryParse与正确的NumberStyles标志来执行转换自己。