Konwersja do systemu binarnego

2011-10-04 08:50
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


lukas_jg
edytowany 2x, ostatnio: madmike, 2011-10-08 02:57

Pozostało 580 znaków

2011-10-04 09:28
alex
0

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

Pozostało 580 znaków

2011-10-04 09:39
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).

edytowany 3x, ostatnio: Azarien, 2011-10-04 09:42

Pozostało 580 znaków

2011-10-04 09:39
alex
0

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

Pozostało 580 znaków

2011-10-04 09:54
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

lukas_jg

Pozostało 580 znaków

2011-10-04 09:58
lukasz1235
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.

Pozostało 580 znaków

2011-10-04 09:59
alex
0

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

Pozostało 580 znaków

2011-10-04 10:00
alex
0

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

Pozostało 580 znaków

2011-10-04 10:28
alex
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ł.

Pozostało 580 znaków

2011-10-04 10:29
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)


lukas_jg

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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