Grandes programas de computador e arquivos , muitas vezes contêm muitos dados para transmitir ou salvar facilmente eles. Para resolver este problema , os programadores têm surgido com algoritmos ou sistemas engenhosos para compactar e descompactar arquivos . Eles são usados para diminuir o tamanho da imagem, vídeo , software e outros arquivos de modo que eles serão mais facilmente utilizável. Compressão
A compressão algoritmo precisa especificamente um dicionário de código e um buffer de saída , que é 50 por cento maior do que os dados. Os dados são combinados e , em seguida, reduzido para a sua forma simplificada. Por exemplo, se você tem um pedaço de 32 bytes de código que pode corresponder a um byte 16, então você é capaz de reduzir a memória pela metade. A compressão de arquivos testes para simplificar toda a sua base de código.
Descompressão
descompressão é um pouco mais simples do que a compressão , pois não necessita de um local de memória específica. Quando você descompactar você simplesmente determinar se os dados são um fósforo ou literal. Se é um jogo , então a descompressão é desnecessária e os dados são copiados a partir do último buffer. Se é um literal , então você codificar o diferencial para o buffer de saída.
Código Compressão
Um algoritmo para comprimir dados usa ponteiros para identificar a memória localização, coincide com os dados e , em seguida, subtrair o código adicional , uma vez que é comprimida. Assim, o "se - mais" função algorítmica podem aparecer da seguinte forma:
if ( valid_pointer (jogo ) && * jogo == * && * entrada (jogo + 1 ) == * (entrada + 1 )) { if ( literal < input) OutputLiteral ( literal , entrada - literal ); } else + + entrada;
descompressão Código
código de descompressão , por outro lado meramente exemplares código literal, para que ele possa ser reproduzido em um tampão de saída , no momento apropriado . Em seguida, ele subtrai a memória adicional do programa. A função de "se - ao passo que" pode aparecer da seguinte forma :
while ( input < fim ) {if (* entrada & 0x80 ) {//matchlength = DecodeLength ( e entrada) ; offset = DecodeOffset ( e entrada ) //mesmo algoritmo que DecodeLengthwhile (comprimento -> 0) {* output = * ( saída - offset) ; + + saída;