我正在尝试测试将一些数据写入文件。
sixteenBitData = (uint16_t*) malloc(sizeof(uint16_t)*bufSizeX*bufSizeY);
memset(sixteenBitData, 1, sizeof(uint16_t)*bufSizeX*bufSizeY);
binfile->write((char *)&sixteenBitData, sizeof(uint16_t)*bufSizeX*bufSizeY);
如你所见,sixteenBitData是一个uint16_t的数组
我希望我的二进制文件有一堆 1,但是当我将它加载到 matlab 中时,它似乎有 0 到 65535 之间的各种数字
我做错了什么吗?
谢谢
最佳答案
1) sixteenBitData 是一个指针。当你写的时候,你获取堆栈中某处指针的地址,然后将其转换为 char*,并将那里的所有内容写入你的文件。我很惊讶它没有崩溃。
2) memset 将每个 byte 的值设置为 1。因为(我假设)uint16_t 是两个字节,所以它被设置为 0x0101,即 257。
sixteenBitData = (uint16_t*) malloc(sizeof(uint16_t)*bufSizeX*bufSizeY);
for(int i=0; i<bufSizeX*bufSizeY; ++i)
sixteenBitData[i] = 1; //obvious replacement here
binfile->write((char *) sixteenBitData, sizeof(uint16_t)*bufSizeX*bufSizeY);
^
& removed
关于c++ - 使用 ofstream 将 uint16_t 写入二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438122/