我发现了这种方式:
ofstream out("test", ios::out | ios::binary);
UINT16 myint16=16;
out.write((char*)&myint16, sizeof(myint16));
但有没有办法在不声明变量的情况下编写INT16二进制文件?
答案 0 :(得分:1)
但有没有办法在不声明变量的情况下编写
INT16
二进制文件?
是的,您可以使用c-string文字:
out.write("\0\0", 2);
要以这种方式输出正确的INT16
值,您需要知道正在编译和运行程序的机器的字节顺序。例如。输出十进制16
out.write("\x01\x00", 2); // 16 in big endian format
out.write("\x00\x01", 2); // 16 in little endian format
答案 1 :(得分:1)
您可以自己编写operator<<
:
std::ofstream& operator<<(std::ofstream& ofs, UINT16 d) {
ofs.write((char*)&d, sizeof(UINT16));
return ofs;
}
int main(int, char*[])
{
ofstream out("test", ios::out | ios::binary);
out << static_cast<UINT16>(16); // no variable declared
}
同样使用C ++ 11,您可以使用用户定义的文字来缩短它:
inline UINT16 operator "" _u(unsigned long long value)
{
return static_cast<UINT16>(value);
}
然后:
out << 16_u;