如何使用 qt 和 c++ 在 .bin 中编写二进制(而不是十六进制)?
How to write binary (and not hex) in .bin with qt and c++?
我正在尝试编写一个二进制文档。到目前为止,我成功地编写了一个内容具有十六进制格式的.bin。我希望内容采用二进制格式(仅限 0 和 1)。
可能吗? 怎么办? 我的想法是错的,用十六进制或二进制是一回事吗?
这是我到目前为止的代码:)
#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();
}
这是事实的内容.bin : 1234 5678 0000 0016
非常感谢您的帮助! :)
这不是问题。二进制、八进制、十进制、十六进制等 - 这只是相同数据的不同表示形式。
计算机是二进制的,因此存储在计算机上的所有数据都是二进制数据。
不要被二进制数据输出给人类的默认/首选方式所欺骗,为了简洁起见,出于技术和历史原因,通常是十六进制的。
计算机可以寻址的最小内容是一个字节。除非显式打包数据,否则布尔值也会存储为字节,即使它们理论上只需要一个位。您不能真正读取或写入单个位,该操作将涉及读取或写入容器字节以及一些按位操作以提取或拼接所需的位。
最后,请记住,数据通常实际上不是以二进制格式存储的,而是作为"文本"存储的,需要额外的解析才能被读取。在这种情况下,数字系统很重要,因为这告诉计算机如何解释文本以将其转换为正确的二进制数据。这样它就知道101
是 5(箱)、65(十进制)、101(十进制)还是 257(十六进制)。
相关文章:
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何在 c++ 中生成十六进制二进制数据的 sha256 哈希?
- 将浮点数向量转换为十六进制/二进制字符串
- 将二进制读入十六进制字节数组
- 如何在C 中的Little Endian中读取来自二进制文件的单独的十六进制字符
- 将40个字节长的数据框从十六进制转换为二进制,然后转换为十进制
- 如何在C++中将十六进制字符转换为二进制
- 如何使用 qt 和 c++ 在 .bin 中编写二进制(而不是十六进制)?
- 两个派生类(十六进制 二进制)的虚拟功能
- 尝试将二进制数组转换为十六进制C++然后打印结果
- 为什么 .out 文件是十六进制而不是二进制
- 如何在 C++ 中将二进制转换为十六进制
- 标准二进制模拟::d ec, 标准::十六进制, 标准::十月.
- 手动将二进制表达式计算为十六进制
- 十六进制、二进制和 oct 到 dec 转换器无法正常工作C++
- C++/C:Char[]的前缀长度(以字节为单位)(二进制/十六进制)
- 如何将二进制十六进制文字输入 std::istream
- 使用数组的十进制到二进制/十六进制
- 将二进制十六进制数据转换为 ASCII 等效数据并存储在字符串中
- 从c++到c#的二进制/十六进制数据的编组/输出