为什么ofstream :: write会在文件末尾添加额外的字节?

问题描述 投票:0回答:1

我正在尝试将以下字节写入文件

[03 00 01 00 FF 00 00 00 FF 00 00 00 FF]

但我不断添加以下字节到最后

[03 01 0F C0 00 08 00 A0 00 C7 00 00 00 02 00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]

我已经阅读了,并且我被告知在打开文件时使用std::ios::binary,这似乎没有帮助。这是我的代码

#include <fstream> 
#include <iostream>
#include <conio.h>
#include <iomanip>

using namespace std;

int main() {
    int height = 1,
        length = 3;
    int data[] = {
        0x3,0x0,0x1,0x0,
        0xff, 0x0, 0x0,
        0x0, 0xff, 0x0,
        0x0, 0x0, 0xff
    };

    ofstream file("thing.dki", std::ios::binary);
    for(int i = 0; i < sizeof(data); i++) {
        file.write((char*) &data[i], 1);
    }
    file.close();

    return 0;
}
c++ c++11 binary hex
1个回答
2
投票

尝试添加

using byte = unsigned char;

到你的代码顶部,然后替换

int data[] 

byte data[]

问题是你已经将它作为整数数据来解决,它可以根据你的操作系统架构和尾随零来改变大小,但是如果你使用char而是自动分配最小的内存空间。

© www.soinside.com 2019 - 2024. All rights reserved.