Konwersja do systemu binarnego

0

Witam,

muszę napisać programik, który wykonuje konwersję danych (litery, cyfry, znaczki, itp) do systemu binarnego.

Napisałem już taki kod:

#include <fstream>
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <string.h>
#include <bitset>

 
using namespace std;
 
int main()
{

    ifstream plik;
    string napis;
    plik.open("data.txt");
    getline(plik, napis);
    plik.close();
    
    int a, b;
    b = napis.length();
    
    ofstream myfile;
    myfile.open ("wynik.txt");
    for(a=0;a<b;a++)
    {
      myfile << bitset<CHAR_BIT>(napis[a]);
    }
    myfile.close(); 


    system("pause");
}

Jednak zapisuje on wyniku binarnie lecz nadal w zapisie znakowym (chociaż jest już kod 0,1)
Czy jest sposób aby zapisywać każde 0 i 1 binarnie do pliku ?

Pozdrawiam,
Łukasz

0

jak widzę te strumienie C++ to mi się niedobrze robi. Ja to bym zrobił normalnie przy użyciu fprintf.

0

wytłumacz, co to znaczy w twoim rozumieniu „binarnie”. jak miałby ten plik wyglądać?

jak widzę te strumienie C++ to mi się niedobrze robi.

strumienie są dobre gdy wystarczy nam standardowe formatowanie. cout << "ala ma" << 2 << "koty" << endl jest łatwiejsze w napisaniu niż printf("ala ma %d koty\n", 2).

0

no właśnie pokaż nam kawałek pliku.

0

Już mówię o co chodzi.

Przykładowo mam tekst:
1234567890#4programmers.net

Muszę go przekonwertować do postaci binarnej, która ma zapis:
001100010011001000110011001101000011010100110110001101110011100000111001001100000010001100110100011100000111001001101111011001110111001001100001011011010110110101100101011100100111001100101110011011100110010101110100

Jednak to co otrzymuję nie jest do końca prawidłowe ponieważ każde 0 i 1ka jest nadal reprezentowana jest jako znak (czyli: 0 = 00110000, 1 = 00110001). Co powoduje to, że plik zajmuje 8 razy więcej miejsca niż na początku.
Teraz po konwersji otrzymuję taki ciąg binarny:

00110000 00110000 00110001 00110001 00110000 00110000 00110001 00110001 00110000 00110000 00110001 00110001 00110000 00110001 00110000 00110000
00110000 00110000 00110001 00110001 00110000 00110001 00110000 00110001 00110000 00110000 00110001 00110001 00110000 00110001 00110001 00110000
00110000 00110000 00110001 00110001 00110000 00110001 00110001 00110001 00110000 00110000 00110001 00110001 00110001 00110000 00110000 00110000
00110000 00110000 00110001 00110001 00110001 00110000 00110000 00110001 00110000 00110000 00110001 00110001 00110000 00110000 00110000 00110000
00110000 00110000 00110001 00110000 00110000 00110000 00110001 00110001 00110000 00110000 00110001 00110001 00110000 00110001 00110000 00110000
00110000 00110001 00110001 00110001 00110000 00110000 00110000 00110000 00110000 00110001 00110001 00110001 00110000 00110000 00110001 00110000
00110000 00110001 00110001 00110000 00110001 00110001 00110001 00110001 00110000 00110001 00110001 00110000 00110000 00110001 00110001 00110001
00110000 00110001 00110001 00110001 00110000 00110000 00110001 00110000 00110000 00110001 00110001 00110000 00110000 00110000 00110000 00110001
00110000 00110001 00110001 00110000 00110001 00110001 00110000 00110001 00110000 00110001 00110001 00110000 00110001 00110001 00110000 00110001
00110000 00110001 00110001 00110000 00110000 00110001 00110000 00110001 00110000 00110001 00110001 00110001 00110000 00110000 00110001 00110000
00110000 00110001 00110001 00110001 00110000 00110000 00110001 00110001 00110000 00110000 00110001 00110000 00110001 00110001 00110001 00110000
00110000 00110001 00110001 00110000 00110001 00110001 00110001 00110000 00110000 00110001 00110001 00110000 00110000 00110001 00110000 00110001
00110000 00110001 00110001 00110001 00110000 00110001 00110000 00110000
0

Ale przecież ten tekst jest juz w ten sposób przechowywany w pamięci bez potrzeby konwertowania. Napisz dokładnie o co ci chodzi.

0

to to konwertujesz sobie 1 2 3 ma liczbę binarną i zapisujesz. Jak dla mnie jest to nietrudne zadanie.

0

wczytujesz sobie po kolei znaki- konwertujesz na binarną postać i to co ci wyjdzie zapisujesz do pliku. To jest proste.

0

ok napisałem przed chwilą ten program - http://www.2shared.com/file/YnJQULuB/konwerter.html?

program działa na plikach:

int main()
{
FILE * plik = fopen("C:\data.txt","r");
FILE * out = fopen("C:\data_o.txt", "w");
}

mogę ci go odsprzedać za 10zł.

0

Już wiem gdzie był błąd. Źle rozumiałem zapis binarny w pliku. Gdybym zapisał tak jak chciałem to zrobić to konwertowało by mi się to do pierwotnego wyglądu (czyli na znaki)

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