Zapis ciągu bitowego do pliku

0

Mam String który zawiera w sobie
01011101110111.....
Chciałem każde zero i każdą jedynkę zapisać jako bit do pliku. Z tego co się dowiedziałem nie istnieje jednak taka możliwość. Jedyna możliwość to połączyć 8 bitów i zapisać jako bajt. I teraz moje pytanie jak te 8 znaków zamienić na bajt?

Głównie mi chodzi o to żeby 0 traktowało jako 0 a nie jako 0011 0000. Tak samo 1.

0

Jeżeli dobrze zrozumiałem:

foreach (char ch in string)
{
 file.write(ch); 
}

(tak w pseudokodzie, ofc.)

0

Właśnie nie chodzi mi o to. Ponieważ w przypadku który pokazałeś.
Jeżeli mam String
00000000
To każde zero potraktuje jako kod ascii i w pliku tak naprawdę będzie zapisane
00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000
A ja chciałbym aby w tym pliku było tylko
00000000 Czyli wielkość pliku ~ 1 bajt

2

Dziel String na odcinki po 8 znaków, do każdej ósemki str stosuj

Byte.parseByte(str,2)

i do pliku zapisuj otrzymane bajty.
Edit1, nie zadziała dla ósemek zaczynających się od "1".
Edit2, działa taki kod:

FileOutputStream fw = new FileOutputStream("output.txt");
...
fw.write(Integer.parseInt(str,2));

Metoda write(int) w klasie FileOutputStream zapisuje bajt - 8 najmniej znaczących bitów.

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