具体来说,我正在尝试使用二进制文件对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)
答案 0 :(得分:4)
看起来你遇到了一个字节序问题。您可能需要使用htons()
或类似内容来获得所需的字节序。 (在数组的每个元素上使用它,例如使用循环或std::transform
)。有关更多详细信息,请参阅http://beej.us/guide/bgnet/output/html/multipage/htonsman.html。