[C++] Konwersja EXE do char[].
Ostatnio zmodyfikowano 2015-08-04 21:08
C-Objective Temat założony przez niniejszego użytkownika |
[C++] Konwersja EXE do char[]. » 2015-08-04 10:58:52 Program konwertuje plik binarny do char[]. Program się kompiluje, jednak nie działa (program blabla.exe przestał działać). Programuję pod Windows, 64 bit. Kod: #include<iostream> #include<fstream> using namespace std; int main() { ifstream infile; infile.open( "source.txt", ios::binary | ios::in ); ofstream outfile; outfile.open( "to.txt", ios::binary | ios::out ); cout << "1. done"; int buffer[ 1024 * 1024 ]; int flen = 0; while( infile.read(( char * ) & buffer, sizeof( buffer ) ) ) { flen++; } outfile << "char array[] = {" << endl; for( int i = 0; i < flen; i++ ) { outfile << buffer[ i ] << ", "; } outfile << "};" << endl; infile.close(); outfile.close(); return 0; }
@edit: "1. done" się nie wyświetla... |
|
DejaVu |
» 2015-08-04 11:00:54 jeżeli chcesz czytać dane binarnie to musisz używać metod read/write, a nie operatorów <</>>. |
|
C-Objective Temat założony przez niniejszego użytkownika |
» 2015-08-04 11:03:15 while( infile.read(( char * ) & buffer, sizeof( buffer ) ) ) { flen++; }
Czytam za pomocą read. Pisanie też zamienić na write? Problem jest jeszcze taki że napis "1. done" się nie wyświetla a powinien. |
|
DejaVu |
» 2015-08-04 11:59:21 to dopisz <<endl na końcu. |
|
C-Objective Temat założony przez niniejszego użytkownika |
» 2015-08-04 13:16:58 dalej nie działa. Chodzi mi głównie o takie coś: plik.txt: MZ ˙˙ ¸ @ € ş ´ Í!¸LÍ!This program cannot be run in DOS mode.
itd.. plik.cpp: char plik[] = { 0x78, 0x6A,...};
Bo chcę zrobić plik w pliku. Notatnikiem przecież nie skopiuję i nie wepchnę w stringa... Przy debugowaniu mam 2x Stack overflow. @3 edit: Alueril chyba napisał coś podobnego. |
|
maly |
» 2015-08-04 13:45:51 int buffer[ 1024 * 1024 ]; Jeśli chcesz mieć tablicę o dużych rozmiarach alokuj ją dynamicznie(new) a najlepiej użyj std::vector . |
|
C-Objective Temat założony przez niniejszego użytkownika |
» 2015-08-04 14:12:03 nawet jeśli tam daję 10 to dalej mi crashuje ( plik z wejściem zawiera 7 znaków). |
|
pekfos |
» 2015-08-04 16:18:59 plik.cpp:
char plik[] = { 0x78, 0x6A,...};
Bo chcę zrobić plik w pliku. Notatnikiem przecież nie skopiuję i nie wepchnę w stringa... |
Program HxD pozwala zapisać dowolny plik w postaci przyjaznej kodzie C. |
|
« 1 » 2 |