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

Citanje i pisanje u bin file

[es] :: .NET :: Citanje i pisanje u bin file

[ Pregleda: 2441 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bciric
Bojan Ciric
Pirot

Član broj: 89846
Poruke: 207
*.adsl-a-1.sezampro.yu.

Sajt: www.cirasoft.co.cc


Profil

icon Citanje i pisanje u bin file29.04.2010. u 14:40 - pre 170 meseci
Kako u c# da upisem string "0011001011011001110011000001111100111010101010111110001100" u binarni file?
A kako da posle iscitam taj file i da opet dobijem string od 0 i 1?

hvala unapred
 
Odgovor na temu

bciric
Bojan Ciric
Pirot

Član broj: 89846
Poruke: 207
*.dynamic.isp.telekom.rs.

Sajt: www.cirasoft.co.cc


Profil

icon Re: Citanje i pisanje u bin file30.04.2010. u 21:53 - pre 170 meseci
niko nema ideju kako to da uradim?
 
Odgovor na temu

pl4stik
Senior .NET programmer/Consultant
oDesk
NI na nebu NI na zemlji

Član broj: 173596
Poruke: 715
*.dynamic.isp.telekom.rs.

Sajt: xx-auth.com.azhar.arvixe...


+31 Profil

icon Re: Citanje i pisanje u bin file30.04.2010. u 22:37 - pre 170 meseci
Definisi binarni file?
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
 
Odgovor na temu

bciric
Bojan Ciric
Pirot

Član broj: 89846
Poruke: 207
*.dynamic.isp.telekom.rs.

Sajt: www.cirasoft.co.cc


Profil

icon Re: Citanje i pisanje u bin file01.05.2010. u 14:22 - pre 170 meseci
pa recimo da to bude .bin fajl u kome ce se zapamtiti ovi bitovi iz stringa, ali kao bitovi a ne kao char.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Citanje i pisanje u bin file01.05.2010. u 20:45 - pre 170 meseci
Tvoj binarni niz ima 58 bita a fajlovi na disku su byte-sized, sto znaci da u fajl moras da zapises x*8 bitova, u tvom slucaju minimalni broj bita je 64 (8 bajtova). Sad se postavlja pitanje cime paddujes tih preostalih 6 bita (sa 0 ili 1) i da li paddujes sa pocetka ili kraja, a to niko ne mozes da znas ako ne znas sta su ti bitovi.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

kosmopolita
Balkan

Član broj: 257864
Poruke: 123



+21 Profil

icon Re: Citanje i pisanje u bin file01.05.2010. u 21:53 - pre 170 meseci
Može prvo da upiše broj bita koje pretvara u bajte. Broj je 58 i ako ne prelazi 255 onda može da upiše kao bajt. Onda doda nule do deljivosti sa 8 pa ih pretvari u bajte. Kada čita, pročita okrugao broj bajta, pretvori ih u bite, pa od bita oduzme višak i dobije početnih 58 od kojih je krenuo.
 
Odgovor na temu

lonelyrider_44
Zrenjanin

Član broj: 42310
Poruke: 445
*.com
Via: [es] mailing liste



+20 Profil

icon Re: Citanje i pisanje u bin file02.05.2010. u 00:22 - pre 170 meseci
Sve od pomenutih predloga podrazumeva neki algoritam, mehanizam, kako
obraditi taj string pre upisa u fajl, kao i obratno,nakon chitanja iz
fajla, proces pretvaranja ponovo u taj string.

Moj predlog je da taj binarni string pretvorish u dekadni broj. A
struktura bin fajla da ti bude takva da na prvom mestu stoji podatak
koliko ima bitova u tom stringu koji se zapisuje, a nakon njega da se
upishe dekadni broj (u koji si pretvorio niz bitova iz stringa). E sad,
ako broj bitova prevazilazi broj bitova koji se mogu realizovati tipom
podatka koji odaberesh, (recimo, u Int32 moze da stane 32 bita), onda cesh
nakon upisa broja bitova, u fajl upisati vishe Int32 podataka). Isto
tako, taj tip moze da bude promenljiv. Ako si prochitao da broj bitova ne
prelazi 255, onda upishi byte, i to chitaj iz fajla da ne bi zauzimao
puno vishe bitova nego shto je potrebno.
Na ovaj nachin, najveci deo posla su dve f-je za konverziju iz stringa 0 i
1 u dekadni broj, i obrnuto.

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
 
Odgovor na temu

bciric
Bojan Ciric
Pirot

Član broj: 89846
Poruke: 207
*.dynamic.isp.telekom.rs.

Sajt: www.cirasoft.co.cc


Profil

icon Re: Citanje i pisanje u bin file02.05.2010. u 11:41 - pre 170 meseci
Ovih 58 bita sam dao kao primer, radi se o mnogo vecem nizu.

bas sam tu i zaglavio, ne znam kako da resim dodavanje recimo nula na kraju da napunim ceo bajt.

pokusacu sa ovim vasim predlogom da prvi bajt u fajlu bude vrednost dodatih nula u poslednjem bajtu niza.

hvala na predlogu
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.dial-up.dsl.siol.net.



+14 Profil

icon Re: Citanje i pisanje u bin file02.05.2010. u 17:05 - pre 170 meseci
Najprostije je da svaki oktet od osam bitova zapisujes kao bajt, sto ti daje najvece moguce pakovanje, naravno bez eksterne kompresije. Npr. "11111111" ces zapisati kao 255, i sl.

Problem treba resiti samo za zadnji oktet binarnog stringa ako nema osam bitova. Pretopstavljam da je bitan broj i nula i jedinica u zadnjem oktetu i da ne mozes da dodajes nule na pocetak ili kraj da dopunis do 8, bez da se izgubi znacenje stringa. Zato predlazem da ti zadnji bajt u fajlu samo kaze koliko ima znacajnih cifara zadnjem oktetu.

Naivna implementacija koja radi bi bila ovako nesto:

Code:

public byte[] ToByteArray(string binaryString)
{
    var len = binaryString.Length;
    var buff = new byte[(len + 7)/8 + 1];
    var buffCnt = 0;
    for (var i = 0; i < len; i += 8)
        buff[buffCnt++] = len - i >= 8 ? Convert.ToByte(binaryString.Substring(i, 8), 2) : Convert.ToByte(binaryString.Substring(i), 2);
    buff[buffCnt] = (byte) binaryString.Substring((buff.Length - 2)*8).Length;

    return buff;
}

public string ToBinaryString(byte[] byteArray)
{
    var res = new StringBuilder(byteArray.Length*8);
    for (var i = 0; i < byteArray.Length - 2; i++)
        res.Append(Int32.Parse(Convert.ToString(byteArray[i], 2)).ToString("D8"));
    var octet = Convert.ToString(byteArray[byteArray.Length - 2], 2);
    res.Append(Int32.Parse(octet).ToString("D" + byteArray[byteArray.Length - 1]));

    return res.ToString();
}

public void Test()
{
    var testStr1 = "0000100100010101001001001101";
    var testStr2 = "00000000";
    var testStr3 = "0";

    if (
        ToBinaryString(ToByteArray(testStr1)).Equals(testStr1) &&
        ToBinaryString(ToByteArray(testStr2)).Equals(testStr2) &&
        ToBinaryString(ToByteArray(testStr3)).Equals(testStr3)
        )
        System.Diagnostics.Debug.Print("Win!");
    else
        System.Diagnostics.Debug.Print("Fail!");
}


byte[] mozes direktno da pises i citas iz fajla sa FileStream klasom.

if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

[es] :: .NET :: Citanje i pisanje u bin file

[ Pregleda: 2441 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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