Olá amigos...

Por exemplo, suponhamos que eu tenha um arquivo que em hexadecimal
ficaria aki:
23 34 23 53 54 34 34 34 34 FE 56 67 FF FF FF FF FF FF FF 54
34 10 02 00 00 00 00 00 00 34 34 34 34 34 34 34 34 34 34 34
FE FE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF 56 89 00 01 FE FF

Estou querendo fazer uma função de compactacao,
que agiria mais ou menos assim em cima dos bytes, compactando eles
em uma sequencia auto explicativa para uma futura decompressao:
40 05 FF 00 08
| | | \/
| | | |------> proximos bytes até a proximo uso da funcao
| | |----> byte q esta repetindo
| |---->numero de bytes repetidos
|--> 40 seria o cabecalho

daí o ultimo exemplo ficaria assim:
23 34 23 53 54 34 34 34 34 FE 56 67 40 07 FF 00 04 54
34 10 02 40 06 00 40 0B 34 00 02
FE FE 40 1F FF 00 00 56 89 00 01 FE FF


40 06 00 40 0B 34 00 02 -> esta parte ficaria assim por causa de 2
vezes o uso da funcao

40 1F FF 00 00 -> 00 00 no final por causa de ser a ultima vez de
uso e nao haver proximas substituicoes

O minimo pro uso da funcao seriam 5 bytes repetidos:
FF FF FF FF FF --> function is 40 05 FF 00 xx -> onde xx seria os
proximos bytes pra usar denovo a funcao

O maximo de repeticoes pra uso da funcao seria 3FFF bytes repetidos.:
3FFF bytes repetidos 34
a funcao seria: 7F FF 34 00 00 -> 7F FF = 40 00(funcao) mais 3F FF
bytes

outro exemplo: 2AC repetidos de 99
função : 42 AC 99 00 00

outro exemplo: 2299 repetidos de 88
funcao: 62 99 88 00 00

Agora alguem poderia me ajudar a implementar isso...
Pegaria um arquivo e salvaria um outro compactado.
Alguem poderia me ajudar? Ficaria muito agradecido!

Um forte abraço..qq duvida soh perguntar







-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 




Responder a