在C ++中,如何将文件正确加载到比char数据类型更宽的数组中?

时间:2011-01-26 16:25:52

标签: c++

具体来说,我正在尝试使用二进制文件对FPGA进行编程。事务寄存器是16位宽。所以我需要创建一个uint16_t数组并用输入文件填充它。这是我试过的:

int bufferSize = 512;
uint16_t buffer[bufferSize];
std::ifstream *pStream = new std::ifstream( filepath );
if( pStream->is_open() == true )
{
   pStream->read( (char *)buffer, bufferSize );
}

从我通过GDB可以看出,似乎每个数组节点都是向后的(即预期的0xBEEF,得到0xEFBE)

1 个答案:

答案 0 :(得分:4)

看起来你遇到了一个字节序问题。您可能需要使用htons()或类似内容来获得所需的字节序。 (在数组的每个元素上使用它,例如使用循环或std::transform)。有关更多详细信息,请参阅http://beej.us/guide/bgnet/output/html/multipage/htonsman.html