Sto implementando l'algoritmo RLE in C e sto riscontrando un grosso problema. Sto usando @ come identificatore per la compressione/decompressione. Mi permetta di utilizzare esempi:Distinguere la lettura del carattere dal numero intero
0 0 0 0 1 2 0 0 0 0 = @ 0 4 1 2 0 4 @
Tipo di @ X = Y ripetizione X, Y volte. E i numeri variano da 0 a 255 (carattere senza segno). Ma il numero 64 mi sta fregando, perché è lo stesso di "@".
Il programma legge 64 0 5
mi aspetto: 64 0 5 (non è necessaria alcuna decompressione)
Cosa ottengo: 0 0 0 0 0 (64 è memorizzato in una variabile char, e poi , il programma usa come '@')
if (var == '@') {
// decompress
}
In Insomma, è necessario implementare un meccanismo di escape per distinguere i marker dai dati. –
Come si converte il 'carattere non firmato 'in numeri interi? – kaylum