Zapis pliku do C

0

Wie ktoś jak napisać w C++ tak aby tworzył taki plik?
user image

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

int main ()
{
    unsigned char bytes[] = { 0x4d, 0x5a, 0x90, 0x03 };
    const char *path = "test.dat";
    fstream file(path, ios::out|ios::binary);
    if(file.is_open()){
        for(unsigned i = 0; i < sizeof(bytes) / sizeof(bytes[0]); ++i){
            file.write((char*)&bytes[i],sizeof(bytes[i]));
        }
        file.close();
    }
    return 0;
}

Plik:
4c40b7147f.png

0

No bardziej mi chodziło że otwiera plik [text] i zapisuje go do pliku jak szesnastkowy

2

Nie pisz programu, tylko użyj istniejącego: xxd -i

0

Każdy plik można odczytać do hex ponieważ przecież każdy plik jest tak naprawdę zapisany przez komputer w systemie binarnym. Jego gołe bajty da się odczytać:

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

int main ()
{
    const char *path = "hello.txt";
    fstream file(path, ios::in|ios::binary);
    if(file.is_open()){
        unsigned char character =  0x00;

        while(file.read((char*)&character,sizeof(character)))
            cout << hex << (int)character << endl;

        file.close();
    }
    return 0;
}

Powyżej czytanie znak po znaku, tak na szybko. Dobrze jest do tego jakiś bufor zrobić.

Tak poza tym to użyj jakiegoś edytora heksadecymalnego, bo otwierając plik i zapisując go bajt po bajcie szesnastkowo otrzymasz kopię pliku źródłowego.

0

Dzięki za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1