【发布时间】:2013-10-05 13:24:31
【问题描述】:
我有一个包含 n 个单精度值的二进制文件。我知道写入数据时使用的格式是大端。当我将数据读入一个浮点向量(下面代码中的“主向量”)时,默认情况下,数据是根据小端格式读入的。我使用以下内容读取数据:
ifstream inputfile("filepath",ifstream::in|ifstream::binary)
inputfile.read(reinterpret_cast<char*>(&mainvector[0]), n*4);
inputfile.close()
stackoverflow 本身有很多关于字节序和转换的讨论。然而,这是我第一次处理字节序问题,所有可用的信息都有点压倒性。在这个过程中,我了解到字节是颠倒的(大端与小端)。
是否可以合并一个单行程序来将我的二进制数据的默认小端处理更改为大端,或对我的 mainvector 进行后处理以获取原始数据?还是我需要手动反转每个 n 值的字节顺序?
更新:似乎没有唯一的办法。单独更改字节顺序是这样做的方法! Mats 和其他地方(例如here)在此处讨论了如何做到这一点。
【问题讨论】:
标签: c++ floating-point binary endianness