2014-09-05 58 views
1

我嘗試使用char指針遍歷整數。我的問題是:爲什麼它向後存儲在內存中?當我運行代碼:在C++中按字節遍歷整數

#include <iostream> 

using namespace std; 

int main(int count, char** args) 
{ 
    unsigned int number = 0xabcdef12; 
    cout << "Number:\t\t" << hex << number << endl; 
    cout << "Iterated:\t"; 

    unsigned char* pointer = (unsigned char*)&number; 
    for(int i=0; i<sizeof(number); i++) 
     cout << hex << (unsigned int)pointer[i]; 

    cout << endl; 

    return 0; 
} 

輸出是:

Number:  abcdef12 
Iterated: 12efcdab 

我想知道是否有辦法迫使C++命令字節,如:

Number:  abcdef12 
Iterated: abcdef12 

(額外信息:我想這樣做,因爲我想通過字節遍歷struct並將結果寫入文件。)

+2

查找字節順序。 – 2014-09-05 04:53:50

+0

很多有趣的信息在這裏:http://programmers.stackexchange.com/questions/95556/what-is-the-advantage-of-little-endian-format – 2014-09-05 05:07:39

回答

4

這是因爲你在「小端」系統上。一些電腦,包括我們大多數人使用的x86電腦,都是這樣。您可以將int的字節順序與標準函數htonl()交換;結果將始終處於「網絡字節順序」,這是您期望的。

+1

「標準」 - 不是C++標準! – 2014-09-05 05:19:29