C++ &引用;“反编译”;将文件转换为原始二进制代码

C++ &引用;“反编译”;将文件转换为原始二进制代码,c++,binary,decompiler,C++,Binary,Decompiler,我想将文件反编译成原始二进制代码。我还没有找到任何关于这个的东西。有可能吗?它必须是为了让计算机运行它,但某些操作系统可能不允许读取它 编辑:让我们清除答案。我想从(例如)一个.txt文件开始,然后以一个0和1的数组结束。存储在Windows和Linux等操作系统的文件系统上的文件不需要像您想象的那样进行“反编译”。它们已经存储为二进制数据 剩下要做的就是简单地读取文件,但需要使用正确的工具 如果使用流I/O之类的文件使用流操作器读取文件,则应该考虑流操作器是格式化的I/O,但不需要格式化的I/

我想将文件反编译成原始二进制代码。我还没有找到任何关于这个的东西。有可能吗?它必须是为了让计算机运行它,但某些操作系统可能不允许读取它


编辑:让我们清除答案。我想从(例如)一个.txt文件开始,然后以一个0和1的数组结束。存储在Windows和Linux等操作系统的文件系统上的文件不需要像您想象的那样进行“反编译”。它们已经存储为二进制数据

剩下要做的就是简单地读取文件,但需要使用正确的工具

如果使用流I/O之类的文件使用流操作器读取文件,则应该考虑流操作器是格式化的I/O,但不需要格式化的I/O,您需要未格式化的I/O < /P> 考虑这个例子。如果您有一个文件

c:\temp\test.txt
,其中包含:

你好,世界

…并运行以下代码:

#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    ifstream f("c:\\temp\\test.txt", ios_base::binary|ios::in);
    for( char c = 0; f.get(c); )
    {
        cout << c << "\t" << "0x" << hex << static_cast<int>(c) << endl;
    }
}

显示的十六进制数和字符是保存数据,只是格式不同而已。没有“反编译”步骤或类似的步骤。此时剩下要做的就是将这些数据像向量一样存储在某个地方,然后重新格式化输出,使其以二进制而不是十六进制或ASCII显示这些值。我将把它作为练习留给读者。

Erm。什么?所有文件都存储为原始二进制代码。没有“反编译”要做。你是说读汇编?试试
objdump-d
听起来你需要Nabob压缩工具!给我们看一个你想“反编译”的文本文件的例子。一个例子?“你好,世界”->(“反编译”)->01110100101010。。。
H       0x48
e       0x65
l       0x6c
l       0x6c
o       0x6f
,       0x2c
        0x20
w       0x77
o       0x6f
r       0x72
l       0x6c
d       0x64
.       0x2e
        0xd

        0xa