简体   繁体   English

strtoull基于输入字符串

[英]strtoull based on the input string

I have a tool called romflasher that takes two string commandline parameters --s-addr0 and --e-addr0 我有一个名为romflasher的工具,它带有两个字符串命令行参数--s-addr0--e-addr0

romflasher --s-addr0 0x1c40000 --e-addr0 0x1e40000

Inside my program romflasher.c 在我的程序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);

This works fine as long as the user specifies the address as hexadecimal.I want to give the user the option to specify it in both decimal as well as hexadecimal.Is there a function that will do the appropriate string conversion based on the presence of '0x' prefix to the correct base? 只要用户将地址指定为十六进制,这就可以正常工作。我想给用户提供以十进制和十六进制指定它的选项。是否有一个函数可以根据'0x'的存在进行相应的字符串转换'0x'前缀到正确的基数?

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM