Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# - upis bitova u datoteku

[es] :: .NET :: C# - upis bitova u datoteku

[ Pregleda: 1569 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

daki88
Daniel Dimitrov
Elektronski fakultet, Nis
Dimitrovgrad

Član broj: 170552
Poruke: 10
*.sc.ni.ac.rs.



Profil

icon C# - upis bitova u datoteku10.12.2010. u 19:02 - pre 162 meseci
Da li neko zna jel postoji neka klasa koja omogućava rad sa bitovima u C#-u? Radim Shannon Fano kompresiju i treba da binarni kod koji dobijem snimim u datoteku. Ukoliko bi snimao kao tip integer ili kao string dobijena datoteka bi bila veća od ulazne što nije dobro. Čak i kad bi vršio konverziju binarnog koda u HEX-a opet bi datoteka bila veća. Neka ideja, bilo šta?
DDimitrov
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: C# - upis bitova u datoteku10.12.2010. u 20:25 - pre 162 meseci
U kojem obliku ti se nalaze ti bitovi pre nego hoces da ih snimis u fajl?
 
Odgovor na temu

daki88
Daniel Dimitrov
Elektronski fakultet, Nis
Dimitrovgrad

Član broj: 170552
Poruke: 10
*.sc.ni.ac.rs.



Profil

icon Re: C# - upis bitova u datoteku10.12.2010. u 20:33 - pre 162 meseci
Svi bitovi su snimljeni u jedan string, mada nije nikakav problem da ih konvertujem nekako, samo nemam ideju kako i u šta... Datoteka može da bude bilo kog tipa
DDimitrov
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: C# - upis bitova u datoteku10.12.2010. u 20:40 - pre 162 meseci
Pa, iseckaj onda na po 8 karaktera i konvertuj svaki takav deo u po jedan bajt a onda to upisuj. Onda ces imati preslikane bitove iz stringa u one da disku tj. jedan bit ce upravo i zauzimati jedan bit memorije na hdd-u.
 
Odgovor na temu

daki88
Daniel Dimitrov
Elektronski fakultet, Nis
Dimitrovgrad

Član broj: 170552
Poruke: 10
*.sc.ni.ac.rs.



Profil

icon Re: C# - upis bitova u datoteku11.12.2010. u 16:40 - pre 162 meseci
Iseckam ga i pamtim svaki bajt pocebno, međutim, on svaki kod, tj svaku 0 ili 1 prepoznaje kao 1 bajt. Evo deo koda koji vrši upis, ekstenzija datoteke je txt ali i kad je stavim *.dat ponaše se potpuno isto i moguće je otvoriti u notepad-u.

Code:

using (FileStream stream = new FileStream("C:\\datoteka.txt", FileMode.Create))
{
    using (BinaryWriter writer = new BinaryWriter(stream))
    {
        byte[] bajt;
        bajt = encoding.GetBytes(osambita); // osambita - string koji sadrži 8 nula i jedinica
        writer.Write(bajt);
        writer.Close();
    }
    stream.Close();
}

DDimitrov
 
Odgovor na temu

Boško

Član broj: 32679
Poruke: 62
*.dynamic.sbb.rs.



Profil

icon Re: C# - upis bitova u datoteku11.12.2010. u 17:07 - pre 162 meseci
Ako hoćeš bajt da upišeš kao niz bitova onda ga upisuj kao string (nemoj da koristiš BinaryWriter).

Code:

string bajt;
bajt = osambita;
//...

A ako hoćeš da upisuješ bit po bit onda promenljivu postavi kao bit i ne deli ulazni string na po osam karaktera već na po jedan.

 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: C# - upis bitova u datoteku11.12.2010. u 17:59 - pre 162 meseci
Moras prvo obraditi svaki string.
Npr, ako imas "10010101" moras pregledati svaku poziciju i izracunati broj. Onda taj broj smestis u promenljivu tipa Byte.
 
Odgovor na temu

daki88
Daniel Dimitrov
Elektronski fakultet, Nis
Dimitrovgrad

Član broj: 170552
Poruke: 10
*.sc.ni.ac.rs.



Profil

icon Re: C# - upis bitova u datoteku13.12.2010. u 16:52 - pre 162 meseci
Uspeo sam da odradim, evo koda, možda nekom potreba. Hvala na saradnji
Code:

if (kod[i] == '0')
{
    bc++;
    buffer = (byte)(buffer << 1);
    if (bc == 8)
    {
        stream.WriteByte(buffer);
        buffer = 0;
        bc = 0;
    }
}
if (kod[i] == '1')
{
    bc++;
    buffer = (byte)(buffer << 1);
    buffer = (byte)(buffer | 0x01);
    if (bc == 8)
    {
        stream.WriteByte(buffer);
        buffer = 0;
        bc = 0;
    }
}

DDimitrov
 
Odgovor na temu

[es] :: .NET :: C# - upis bitova u datoteku

[ Pregleda: 1569 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.