c++ - 在 C++ 中使用 ofstream 将 32 位二进制数据写入文件

标签 c++ rhapsody

我正在尝试将 uint32_t 数据写入 .bin 文件。我首先打开一个文件流,我声明它是一个二进制文件。

  `hartInStream.open (hartFileToWrite.c_str(), std::ifstream::binary);
   if(!hartOutStream.is_open())
        {
        printf("Something in outstream went wrong.\n");  
        }
   else 
        {
        printf("Yippy! it outstream worked!\n");  
        printf("---------Starting to read-------------\n");}`

接下来,我获取要写入的数据(在本例中为 uint32_t“数据”),将其打印出来,并将其写入文件流的末尾。

printf(" Reading %lu from HART at %d-%d-%d\n", data, (int)addr1, (int)addr2, (int)addr3 );

最后我追加数据

hartOutStream<<data;

我知道我应该写 0x00 0x00 0x01 0x00 (256) 作为前 4 个字节,但我正在写 32 35 36 相当于 256 的 ascii 字符的十六进制。(使用 HxD 文件查看器)

我怀疑问题出在 << 运算符,它将其类型转换为 ascii。我尝试过类型转换,atoi() 函数,但似乎没有任何效果。有谁知道这有什么问题吗?

谢谢

最佳答案

ofstream f;
f.open("my.bin",std::ofstream::binary);
uint32_t data=0x00000100;
f.write((char*)&data,sizeof(data));

关于c++ - 在 C++ 中使用 ofstream 将 32 位二进制数据写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22842954/

相关文章:

c++ - 将文件读入 std::string 的最有效方法是什么?

c++ - 这个自动模板推导指南正确吗?

java - 在线程 "main"com.telelogic.rhapsody.core.RhapsodyRuntimeException : Can't co-create object 中获取异常

DO-178 航空电子环境的狂想曲?

c++ - IBM Rhapsody 中状态图终止连接器的理解

c++ - 按特定顺序排列 vector 元素

c++ - 基类中 vector 的干净实例化

c++ - 如何从CGAL中的Edge_iterator获取源点和目标点

java - IBM Rhapsody Java API - 获取项目中的每个元素