2014-09-05 81 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