3

我有一个名为 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'前缀的存在进行适当的字符串转换到正确的基地?

4

2 回答 2

3

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

于 2013-04-04T03:57:00.277 回答
1

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

于 2013-04-04T04:00:00.933 回答