C++ 如何使用qt和c+在.bin中写入二进制(而不是十六进制)+;?

C++ 如何使用qt和c+在.bin中写入二进制(而不是十六进制)+;?,c++,qt,file,C++,Qt,File,我想写一个二进制文件。到目前为止,我成功地编写了一个.bin,其中的内容是十六进制格式的。我想有一个二进制格式的内容(0和1只) 可能吗? 怎么做? 我的想法是不是错了,用十六进制还是二进制是同一回事 这是我目前的代码:) #包括 #包括 #包括 #包括 #包括 #包括 #包括 void createBinaryFile() { INTA=22; QFile文件(“/home/../facts.bin”); 如果(!file.open(QIODevice::WriteOnly)){ 这不是问题。

我想写一个二进制文件。到目前为止,我成功地编写了一个.bin,其中的内容是十六进制格式的。我想有一个二进制格式的内容(0和1只)

可能吗? 怎么做? 我的想法是不是错了,用十六进制还是二进制是同一回事

这是我目前的代码:)

#包括
#包括
#包括
#包括
#包括
#包括
#包括
void createBinaryFile()
{
INTA=22;
QFile文件(“/home/../facts.bin”);
如果(!file.open(QIODevice::WriteOnly)){

这不是问题。二进制、八进制、十进制、十六进制等等——这只是相同数据的不同表示

计算机是二进制的,因此存储在计算机上的所有数据都是二进制数据

不要被二进制数据输出给人类的默认/首选方式所欺骗,为了简洁起见,出于技术和历史原因,二进制数据通常是十六进制的

计算机能处理的最小的东西是一个字节。除非显式打包数据,否则布尔值也会存储为字节,即使理论上它们只需要一个位。你不能真正读取或写入一个位,该操作将涉及读取或写入容器字节加上一些按位操作,以提取或拼接数据他想要一点


最后,请记住,数据通常不是以二进制格式存储的,而是以“文本”的形式存储的这需要额外的解析才能读取。在这种情况下,数字系统很重要,因为它告诉计算机如何解释文本,以便将其转换为正确的二进制数据。这样它就知道
101
是5(bin),还是65(oct),或101(dec)或257(hex).

每台计算机内部只存储0和1。十六进制只是查看其内容的一种简单方式。是的,这就是为什么我怀疑是否需要在文件中转换它们。但问题是我需要读取一个.bin,它的内容是位,而不是十六进制表示法:p我是这么说的。它们只存储在二进制中。十六进制只是一种方便的方式这意味着,当您看到0xF时,它们在内部以1111的形式存储在二进制中(假设只有4位),您不希望使用格式化操作(即
运算符“到目前为止,我成功地编写了一个.bin,其中内容为十六进制格式”由什么查看?不清楚你在说什么。你要么有一个二进制文件,要么没有。剩下的只是你如何查看数据的问题,例如,你可能在十六进制编辑器中查看数据。你还忘了向我们显示所需的内容…只是错误的内容。。。
#include <QApplication>
#include <QDataStream>
#include <QString>
#include <QFile>
#include <iostream>
#include <QDebug>
#include <QTextStream>
void createBinaryFile()
{
    int a = 22;

    QFile file("/home/.../facts.bin");
    if (!file.open(QIODevice::WriteOnly)) {
        std::cerr << "Cannot open file for writing: "
              << qPrintable(file.errorString()) << std::endl;
    return;
    }
    QDataStream out(&file);
    out.setVersion(QDataStream::Qt_4_3);
    out << quint32(0x12345678) << a;
    QTextStream writeInConsole(stdout);
    writeInConsole << a;

    file.flush();
    file.close();

}
void readBinaryFile()
{
    quint32 n;
    int a;
    QFile file("/home/.../facts.bin");
    if (!file.open(QIODevice::ReadOnly)) {
        std::cerr << "Cannot open file for reading: "
              << qPrintable(file.errorString()) << std::endl;
    return;
}

QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_3);

in >> n >> a;
QTextStream okk(stdout);
okk << a;
}

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
createBinaryFile();
//readBinaryFile();

return app.exec();
}