파일을 원시 바이너리 코드로 디 컴파일하려고합니다. 나는 그것에 대해 아무것도 발견하지 못했다. 심지어 가능할까요? 그것은 컴퓨터가 그것을 실행하기 위해서는 있어야하지만, 일부 OS는 그것을 읽을 수 있도록 허용하지 않을 수도 있습니다.파일을 원시 바이너리 코드로 "디 컴파일"
편집 : 답을 취소하십시오. .txt 파일로 시작하여 0과 1의 배열로 끝내기를 원합니다.
파일을 원시 바이너리 코드로 디 컴파일하려고합니다. 나는 그것에 대해 아무것도 발견하지 못했다. 심지어 가능할까요? 그것은 컴퓨터가 그것을 실행하기 위해서는 있어야하지만, 일부 OS는 그것을 읽을 수 있도록 허용하지 않을 수도 있습니다.파일을 원시 바이너리 코드로 "디 컴파일"
편집 : 답을 취소하십시오. .txt 파일로 시작하여 0과 1의 배열로 끝내기를 원합니다.
Windows 및 Linux와 같은 운영 체제의 파일 시스템에 저장된 파일은 "디 컴파일"할 필요가 없습니다. 네가 생각하는 것처럼. 이미 이진 데이터로 저장됩니다.
당신이해야 할 일은 파일을 읽는 것 뿐이지 만 올바른 도구를 사용해야합니다.
스트림 조작기를 사용하여 파일을 읽으려면 스트림 I/O와 같은 것을 사용하는 경우 형식의 I/O를 고려해야합니다. 그러나 형식화 된 I/O를 원하지 않으면 형식화되지 않은 I/O가 필요합니다.
이 예제를 고려하십시오. 파일이 c:\temp\test.txt
인 경우 :
안녕하세요. 단지 포맷,
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
헥스 번호와 표시되는 문자 데이터 저장 위치 :
#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; } }
당신은 출력이 나타납니다 :
... 그리고이 코드를 실행 다르게. "디 컴파일"단계 나 그와 같은 것이 없습니다. 이 시점에서해야 할 일은이 데이터를 vector<char>
과 같은 위치에 저장하고 출력을 다시 포맷하여 16 진수 또는 ASCII가 아닌 이진 값으로이 값을 표시하는 것입니다. 나는 그것을 독자에게 연습으로 남겨 둘 것이다.
Erm. 뭐? 모든 파일은 원시 2 진 코드로 저장됩니다. 수행 할 "디 컴파일"이 없습니다. –
어셈블리를 읽으셨습니까? 'objdump -d'를 시도하십시오 – Collin
Nabob 압축 도구가 필요한 것 같습니다. –