[英]Converting a char* containing hex digits
我將920173e3
作為命令行參數調用以下程序:
void getAddr(void* addr)
{
unsigned const char* temp = (unsigned const char*)addr;
printf("%s", &temp[0]);
}
int main(int argc, char *argv[])
{
getAddr(argv[1]);
return 0;
}
printf("%s", &temp[0])
正確打印920173e3
,但是如何才能打印920173e4
和920173e5
,依此類推?
如果我嘗試使用諸如printf("%s", &temp[1])
或temp++
,則printf("%s", &temp[0])
只會截斷原始字符串的一部分( 920173e3
變為20173e3
,然后是0173e3
,依此0173e3
上)。
您的代碼不起作用,因為它對字符串而不是數字進行操作。 當您打印&temp[0]
它與直接打印temp
相同。 當您“遞增”它時,您就是將指針遞增到字符串的開頭,因此它將從前面刪除一個字符。
要將其實際增加為數字,您需要將其轉換為1,並顯示為1:
void getAddr(unsigned long addr)
{
printf("%lx", addr);
}
int main(int argc, char *argv[]) {
getAddr(strtoul(argv[1], NULL, 16));
return 0;
}
現在您可以適當地增加它,等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.