C 基于输入字符串的stroull

C 基于输入字符串的stroull,c,string,C,String,我有一个名为romflasher的工具,它接受两个字符串命令行参数--s-addr0 和--e-addr0 romflasher --s-addr0 0x1c40000 --e-addr0 0x1e40000 在我的程序romflasher.c中 char s_addr_0[256]; char e_addr_0[256]; uint32_t start_addr = strtoull(s_addr_0,(char**)NULL,16); uint32_t end_addr =

我有一个名为romflasher的工具,它接受两个字符串命令行参数
--s-addr0
--e-addr0

romflasher --s-addr0 0x1c40000 --e-addr0 0x1e40000
在我的程序romflasher.c中

 char s_addr_0[256];
 char e_addr_0[256];

 uint32_t start_addr = strtoull(s_addr_0,(char**)NULL,16);
 uint32_t end_addr   = strtoull(e_addr_0,(char**)NULL,16);

只要用户将地址指定为十六进制,这就可以正常工作。我想让用户可以选择以十进制和十六进制同时指定地址。是否有一个函数可以根据是否存在
'0x'
前缀将字符串转换为正确的基?

如果将0传递为
参数,
strtoull
识别
0x
0
前缀分别表示十六进制和八进制,否则默认为十进制。

为什么不将包装函数写入strtoull(mystrtoull)并检测字符串中的0x,并相应地将基参数传递给stroull?

我可以这样做。我只是想知道是否有现有的方法可以解决此问题。您不应该使用typecast
NULL
,它应该是一个通用指针。