luni, 8 noiembrie 2010

C#: Citire caracter cu codul ASCII mai mare de 127 din fisier

Am dat de problema urmatoare si nu i-am gasit rezolvare inca.

Fac un program pentru facultate in C# si programul meu trebuie sa faca urmatoarele:

1. Sa citeasca niste caractere dintr-un fisier .txt
2. Sa le codeze printr-un algoritm de comprimare Shannon - Fano (neimportant)
3. Sa le scrie codurile intr-un fisier

Exemplu: a - 0001 b - 001 c - 10 d - 11 e - 01 (caracterul - codul de scris in fisier)

In fisierul comprimat pe langa alte chestii vin si caracterele comprimate.

In fisierul initial avand spre exemplu: abcdecdecd
In fisierul comprimat o sa fie sirul de biti (pe care cu greu i-am pus):
"0001-001-1 0- 11- 01- 10 -1 1- 01 - 10 - 11-0"
a - b - c - d - e - c - d - e - c - d -
si o completare de 1 bit de 0 sa fie octeti intregi

adica octetii: "00010011 01101101 10110110" valoare binara
sau "19 109 182" valoare zecimala

Pana acum a fost partea de comprimare si functioneaza perfect.

Acum vine partea de decomprimare care face urmatoarele:

1. Copiaza din fisierul comprimat cei 3 octeti "19 109 182" si totul merge bine pana la 182 care este mai mare decat 127 si nu mai face parte din tabela de caractere ASCII ci face parte din tabela de caractere Extended ASCII si deci e problema la citire pentru ca in loc de valoarea 182 in variabila in care pun ce citesc din fisier imi pune valoarea 65533.

Asta e marea problema: Cum citesc valoarea 182 din fisier si sa pun intr-un int valoarea 182 nu alta valoare.

Am incercat cu toate tipurile de Encoding care le-am gasit. Folosesc pentru citire un StreamReader si instructiunea de citire este:

Buffer = f.Read();

f fiind handler-ul stream-ului de citire.

Daca da careva pe aici si stie rezolvarea il rog sa ma ajute.

Niciun comentariu :