Plik binarny

0

Mam napis w programie: "Zmienna:50".

Jak zapisać to do pliku .bin binarnie? Czyli tak by po otworzeniu w notatniku pojawiały się krzaki.

Robię tak:

 using (BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.Create)))
            {
                foreach (char bit in text)
                    writer.Write((byte)bit);
            }

Ale zapisuje się jako zwykły tekst. Gdy zamiast znaków wpisuje '0' lub '1' to w notatniku pojawiają się krzaki.

0

Text w postaci binarnej wygląda dokładnie jak tekst, tylko liczby w postaci binarnej są "zakodowane".

0

Czyli by całość została "zakodowana" to wpierw muszę znaki pozmieniać na kody ascii(bin lub hex)?

0

znaki tak samo zakodowane wg tablicy ASCII, ale edytor tekstowy odczytuje i każdy znak osobno odkodowuje wg tablicy ASCII - więc wydaje się że teksty nie są zakodowane.

0

Hmm... Racja. jak otwieram za pomocą VS to pokazuje w hexach ale w notatniku zwykły tekst. No i jak to pokazałem na lekcji bo to było zadanie takie to zostało nie zaliczone bo w notatniku powinny być krzaki. Można jakoś ustawić by nie tłumaczyło samo?
Windows 10.

0

Nie, ale możesz użyć jakiegoś algorytmu z kryptologii.

0

To program na Kody Huffmana.

0

No to musisz bity zapisywać a nie znaki.

0

Czyli znak przerobić na bity?

0

Nie, bity pogrupować po 8 szt w bajty.

0

Jak?

Huffmanem koduje tekst na bity a później zmieniam go na tekst by coś dodać i wtedy zapisuje do pliku. Mam już całą logikę dekodowania. Można zapisać do pliku by wyglądało jak krzaki ale nie zmieniać struktury przy odczycie?

Odczytuje tak:

var bits = new List<byte>();
            int position = 0,
                length;
            using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open)))
            {
                length = (int)reader.BaseStream.Length;
                while (position < length)
                {
                    bits.Add(reader.ReadByte());
                    position++;
                }
            } 

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