为什么file.write()不按照我给出的顺序存储字节? C ++

时间:2016-11-17 09:07:16

标签: c++

短: 我想按字节顺序将数据字节写入文件。 使用file.write将数据传输到文件。 但是当我使用hexdump查看文件时,写入的数据不是按顺序排列的。

这是我的代码:

#include <iostream>
#include <fstream>
#include <stdint.h>

int main() {
    // array with four bytes I want to write 
    // This should be 0x01020304 in memory
    char write_arr[4]={1,2,3,4};

    // int with four bytes I want to write
    // I use little endian so this should be 0x04030201 in memory
    int write_num=0x01020304;

    std::ofstream outfile;

    outfile.open("output.txt",std::ios::out | std::ios::binary | std::ios::trunc);

    if( outfile.is_open() ) {
        outfile.write( write_arr ,sizeof(write_arr)/sizeof(char) );
        outfile.write( reinterpret_cast<char *>(&write_num),sizeof(write_num) );
        outfile.close();
    }

    return 0;
}

当我在输出上使用hexdump时,它会显示:

0201 0403 0304 0102

字节已重新排列。

我希望输出为:

0102 0304 0403 0201

为什么重新安排会发生?

如何实现字节顺序传输?

1 个答案:

答案 0 :(得分:1)

hexdump转储2个字节的字;不是个人角色。 这让你感到困惑 - 试试

entry: [
  'babel-polyfill',
  path.join(__dirname, '../src/index')
],