-1
我想将文件反编译为(/将它们读取为)原始二进制代码。我没有发现任何关于此事的信息。它甚至有可能吗?它必须是为了让电脑运行它,但有些操作系统可能不允许读取它。将一个文件“反编译”为原始二进制代码
编辑:让我们明确答案。我想从(例如).txt文件开始,以0和1的数组结尾
我想将文件反编译为(/将它们读取为)原始二进制代码。我没有发现任何关于此事的信息。它甚至有可能吗?它必须是为了让电脑运行它,但有些操作系统可能不允许读取它。将一个文件“反编译”为原始二进制代码
编辑:让我们明确答案。我想从(例如).txt文件开始,以0和1的数组结尾
存储在操作系统(如Windows和Linux)的文件系统上的文件不需要“反编译”你似乎认为的方式。它们已经存储为二进制数据。
您只需要阅读文件,但您需要使用正确的工具。
如果您使用类似流I/O的操作来使用流操纵器读取文件,则应该考虑流操纵器的格式为,格式为 I/O。但你不想格式化I/O,你想要无格式的I/O。
考虑这个例子。如果你有一个文件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;
}
}
你会看到输出是:
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
的十六进制数和显示的字符是保存数据,刚刚格式化不同。没有“反编译”步骤或类似的东西。剩下要做的就是将这些数据存储在某个地方,如vector<char>
,并可能重新格式化输出,以便以二进制形式显示这些值,而不是以十六进制或ASCII形式显示。我会把这个作为练习留给读者。
呃。什么?所有文件都以原始二进制代码形式存储。没有“反编译”可以完成。 –
你的意思是阅读大会?试试'objdump -d' – Collin
听起来像你需要Nabob压缩工具! –