我尝试使用char指针迭代整数。我的问题是:为什么它向后存储在内存中?当我运行代码时:
#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
并将结果写入文件。)
答案 0 :(得分:4)
这是因为你是在&#34; little-endian&#34;系统。有些计算机,包括我们大多数人使用的x86计算机,都是这样的。您可以使用标准函数htonl()
交换int的字节顺序;结果将始终在&#34;网络字节顺序&#34;这是你期待的那个。