|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jan 2006
Messaggi: 7
|
[C] Codifica RLE
Ciao a tutti,
devo effettuare la codifica rle su file di testo in C. Le specifiche del progetto su come indicare il numero di volte in cui un carattere viene ripetuto, non deve prevedere l'utilizzando di un carattere (1 char, ovvero 1 byte) per ogni cifra del numero di occorrenze del carattere da ripetere. Ad esempio: nel caso della stringa: aaaaaaaaaaaaa avrò la codifica: 13a Questa soluzione è ritenuta altamente inefficiente per lo spreco di memoria(13 è rappresentabile con un solo byte). Avete qualche suggerimento per un approccio migliore di questo che ottimizzi il meglio possibile l'uso della memoria,tenendo conto che non ci devono essere limitazioni sul numero di occorrenze di caratteri consecutivi nel file? Ultima modifica di The_Matrix_Coder : 15-05-2008 alle 17:26. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Puoi sfruttare il fatto che un char (meglio, leggi degli unsigned char) abbia 8 bit, così puoi avere per ogni carattere un numero tra 0 e 256. Così puoi fargli scrivere il codice ASCII 13, usando un solo byte, invece di scrivere il numero 13 usando due byte.
Se usi due caratteri invece potrai avere un valore molto più grande (tra 0 e 255*256 + 255 = 65535 come numero massimo). Con altri caratteri in più avrai valori ancora più grandi, puoi provare a riservare due dei valori tra 0 e 255 codificabili come caratteri ASCII per rappresentare l'inizio e la fine della sequenza "numerica"... almeno questo mi viene in mente così di getto. ciao ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Jan 2006
Messaggi: 7
|
grazie mille Daniele! Ciao!
![]() |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
altre due vittime della VICIUS-ite, tsk tsk
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Eh? Cosa?
![]() Ah, intendi forse il "ciao ![]() ![]() Be' in effetti sì l'ho fregato a VICIUS, ma devo ammettere che è molto "professional", come si richiede ad un vero mod come lui. ![]() ciao ![]() ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:31.