我調用與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
等)。
所以,你只是想知道如何將字符串轉換爲十六進制?你的問題的其餘部分只是你爲什麼要這樣做的額外細節?如果是這樣,請看這裏http://stackoverflow.com/questions/10746450/how-to-convert-string-to-hexadecimal – John3136 2015-01-26 23:26:58
不知道這是否與你的目標相關,但你應該記住,每一個進程擁有自己的專用虛擬內存。因此,使用輸入「930582ef」運行該程序不會讓您看到物理內存地址「930582ef」中的內容,而是您將在其虛擬地址空間中看到程序看到的「930582ef」,這可能是某些其他物理地址。如果地址超出程序的私有內存,則會出現分段錯誤。 – eigenchris 2015-01-26 23:32:46
你問算法將十六進制轉換爲十進制嗎? – 2015-01-27 03:21:01