-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壓縮工具! –