读取每个字节的数组字节

时间:2014-10-19 10:15:05

标签: c++ arrays

我想读取每个字节的数组,但是数组可以是大于一个字节的任何类型。

以下面的代码为例:

unsigned short numbers[5] = { 1, 2, 3, 4, 5 }; 
unsigned char* point = (unsigned char*) numbers;
for (int i = 0; i < 5; i++)
{
    std::cout << (int) *point;
    point ++;
}

数组的类型为unsigned short,因此每个元素的长度为两个字节。要读取内存中的连续数据,我尝试使用一位长unsigned char。打印5个第一个字节,我希望输出&#34; 01020&#34;,但我得到&#34; 10203&#34;。缺少第一个字节,但我不知道为什么。在我的IDE中,我检查了numberspoint的地址,它们都指向循环前的相同内存地址。

1 个答案:

答案 0 :(得分:1)

这是因为你的机器是小端的。

要正确理解,请检查

for (int i = 0; i < 5; i++)
  {
   printf("%d",(int) *point);
   point ++;
   printf("%d",(int) *point);
   point ++;
  }

这将打印以下输出:1020304050

因为您只是将指针point递增一个字节。因此,您将获得第一个5字节作为输出10203