2013-04-04 51 views
3

我有一個工具,稱爲romflasher接受兩個字符串命令行參數的--s-addr0--e-addr0strtoull將基於輸入字符串

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); 

這工作得很好,只要因爲用戶指定的地址是十六進制的。我想給用戶選擇以十進制和十六進制來指定它。是否有一個函數會根據pre '0x'前綴的正確基地?

+1

你不應該類型化NULL,它應該是一個通用的指針。 – 2013-04-04 04:02:02

回答

3

如果傳遞0作爲base說法,strtoull識別0x0前綴來分別表示十六進制和八進制,默認爲十進制,否則。

1

爲什麼不寫一個包裝函數strtoull(mystrtoull)並檢測字符串中的0x並相應地將基本參數傳遞給strtoull?

+0

我可以做到這一點。只是想知道是否有現有的方法來解決這個問題。 – liv2hak 2013-04-04 04:01:17