我有一个名为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 :(得分:3)
如果传递0作为base
参数,则strtoull
识别0x
和0
前缀分别表示十六进制和八进制,否则默认为十进制。
答案 1 :(得分:1)
为什么不向strtoull(mystrtoull)写一个包装函数并检测字符串中的0x并相应地将base参数传递给strtoull?