我想读网络字节顺序格式的C++文件。C++读网络字节顺序的文件
到目前为止,我试着用(只读取第一个整数(2字节)):
ifstream in ("input.dat", ios::in|ios::binary);
unsigned short x;
in >> x;
和一些其他的解决方案,我在网上找到。 似乎没有工作。
Thak你在前进,
我想读网络字节顺序格式的C++文件。C++读网络字节顺序的文件
到目前为止,我试着用(只读取第一个整数(2字节)):
ifstream in ("input.dat", ios::in|ios::binary);
unsigned short x;
in >> x;
和一些其他的解决方案,我在网上找到。 似乎没有工作。
Thak你在前进,
in >> x
没有什么意义,如果你啜此为二进制数据。 operator >>
用于格式化的提取。你应该有可能使用std::istream::read()
方法及ntohs()
像这样的东西它后面:
#include <cstdint>
#include <netinet/in.h>
ifstream in ("input.dat", ios::in|ios::binary);
uint16_t x;
if (in.read(reinterpret_cast<char*>(&x), sizeof(x)))
{
x = ntohs(x);
// use x here
}
...假设你的文件是原始的二进制。还要注意改变类型。对于任何平台独立性而言,读取条目的优点是16位宽,作者也应该意识到这一点。
检查'ntohs()'和'ntohl()'函数。 –