Compactaзгo de dados -
ipsBruno - 16.10.2013
Nunca vi nenhum plugin ou tуpico a respeito.
Bem, compactaзгo de dados й um assunto bastante difнcil, mas nunca vi ninguйm ter a ideia de fazer algumas funзхes para isto.
Pensando assim, resolvi criar um sistema simples de compactaзгo de dados que funciona com nъmeros de 0 a 65025
pawn Код:
#define USE_UTF8 false
readCompactValue() {
new File:gFile = fopen("file.txt", io_readwrite ), c, d;
c = fgetchar(gFile, 0, USE_UTF8);
d = fgetchar(gFile, 1, USE_UTF8);
fclose(gFile);
return ~d ? c *0xff + d: c ;
}
saveCompactValue(value) {
new File:gFile = fopen("file.txt", io_write);
if(value > 254) {
fputchar( gFile, value / 0xff , USE_UTF8 );
fputchar( gFile, value % 0xff , USE_UTF8 );
}
else {
fputchar( gFile, value , USE_UTF8 );
}
fclose(gFile);
return true;
}
Entao:
pawn Код:
saveCompactValue(63333);
printf("%d", readCompactValue());
Tб bem simples por enquanto, й sу uma demonstraзгo. Logo que aprimorar este sistema, irei colocar no IPSI
A economia de memуria й bastante alta com valores altos, veja o exemplo:
Sem compactaзгo:
5 x 4 = 20 bytes
com
2 x 4 = 8 bytes
Uma economia de 60%
Re: Compactaзгo de dados -
shittt - 16.10.2013
Vix queria entender isso, mais Meu processador ( Cerйbro ) e muito lento :/
Respuesta: Compactaзгo de dados -
ipsBruno - 16.10.2013
Nem й tгo complicado, basicamente os arquivos aceitam caracteres, que tem valor de 0 a 255. Porem, se armazenar 255 vai gastar 3 caracteres, entao ao inves disto eu apenas armazeno um caractere com valor 255. Ocupando 1 caractere de valor 255.
Para nъmeros maiores que 255, eu tirei o resto sobre 255, e quando vou carregar esses valores apenas multiplico por 255 acrйscimo do resto para equivaler os dados.
Re: Compactaзгo de dados -
WLSF - 16.10.2013
Eu tou fazendo algumas atualizaзхes na iBits, que somou ideias desse tipo, depois te mostro.
Respuesta: Re: Compactaзгo de dados -
ipsBruno - 16.10.2013
Quote:
Originally Posted by Willian_Luigi
Eu tou fazendo algumas atualizaзхes na iBits, que somou ideias desse tipo, depois te mostro.
|
Eu jб pretendo fazer um sistema para salvar dados em iBits depois.
Re: Respuesta: Re: Compactaзгo de dados -
WLSF - 16.10.2013
Quote:
Originally Posted by ipsBruno
Eu jб pretendo fazer um sistema para salvar dados em iBits depois.
|
Muito bom
Re: Compactaзгo de dados -
PT - 16.10.2013
que isto significa?
Respuesta: Re: Compactaзгo de dados -
ipsBruno - 16.10.2013
Quote:
Originally Posted by PT
|
Й o dado compactado em 60%
Re: Respuesta: Re: Compactaзгo de dados -
PT - 16.10.2013
Quote:
Originally Posted by ipsBruno
Й o dado compactado em 60%
|
tem alguma tabela de referencia pra se ver isso?
Respuesta: Re: Respuesta: Re: Compactaзгo de dados -
ipsBruno - 16.10.2013
Quote:
Originally Posted by PT
tem alguma tabela de referencia pra se ver isso?
|
Nгo sгo dados para leitura humana, nгo tenho tabela, porque fiz usando um calculo.
Mas basicamente й:
AB
A tem valor 65
B tem valor 66
entгo eu multiplico primeiro elemento 65 * 255 e acresco o segundo, 66.
ou 16575 + 66 = 16641
Logo AB = 16641
Aqui os valores decimais:
http://pt.wikipedia.org/wiki/ASCII
Й tudo na base 0xff (255).
Obrigado