在C ++中逐字节迭代

时间:2014-09-05 04:50:47

标签: c++ pointers iteration

我尝试使用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并将结果写入文件。)

1 个答案:

答案 0 :(得分:4)

这是因为你是在&#34; little-endian&#34;系统。有些计算机,包括我们大多数人使用的x86计算机,都是这样的。您可以使用标准函数htonl()交换int的字节顺序;结果将始终在&#34;网络字节顺序&#34;这是你期待的那个。