int x = 5;
std::cout.write(reinterpret_cast<const char*>(&x),sizeof(x));
注意:以二进制格式写入数据是不可移植的。 如果你想在另一台机器上阅读它,你要么需要完全相同的架构,要么需要标准化格式,并确保所有的机器都使用标准格式。 If you want to write binary the easiest way to standardise the format is to convert data to network format (there is a set of functions for that htonl() <--> ntohl() etc)
int x = 5;
u_long transport = htonl(x);
std::cout.write(reinterpret_cast<const char*>(&transport), sizeof(u_long));
6条答案
按热度按时间0tdrvxhp1#
有点晚了,但是,正如凯蒂在她的博客中所展示的,这可能是一个优雅的解决方案:
取自:https://katyscode.wordpress.com/2012/05/12/printing-numbers-in-binary-format-in-c/
nbnkbykc2#
可以使用
std::ostream::write()
成员函数:请注意,您通常希望对以二进制模式打开的流执行此操作。
hs1rzwqc3#
试试看:
注意:以二进制格式写入数据是不可移植的。
如果你想在另一台机器上阅读它,你要么需要完全相同的架构,要么需要标准化格式,并确保所有的机器都使用标准格式。
If you want to write binary the easiest way to standardise the format is to convert data to network format (there is a set of functions for that htonl() <--> ntohl() etc)
但是最易移植的格式是直接转换为文本。
5hcedyr04#
那这个呢?``
mctunoxg5#
给你点提示。
首先,要使值在0和2^32 - 1之间,需要一个 unsigned 4字节的int型。
第二,从地址x(&x)开始的四个字节已经有了你想要的字节。
有帮助吗?
qgelzfjb6#
从C++20开始,也可以使用
std::format
和二进制格式说明符b
:Godbolt link.