Monday 25 December 2017

Run length compression binary options


Eu tenho um formulário web, para o conteúdo do qual eu gostaria de gerar uma representação curta no Base64. A forma, entre outras coisas, contém uma lista de 264 valores binários, a maior parte dos quais vão ser 0 em qualquer momento. (Representam regiões em um mapa geográfico). Mesmo em Base64, este número de 264 bits gera uma cadeia longa e intimidante. Eu quero implementar a codificação run-length, tão eficientemente quanto possível. Você pode me ajudar com este Ive googled binário RLE, mas não encontraram nada de uso. O que eu tentei este remoto RLE na cadeia binária usando contagens decimais e A como um separador denotando uma mudança entre 0 e 1, em seguida, convertendo o resultado da base 11 para base 64. Por exemplo: que por sua vez torna-se melhor, mas Eu ainda não posso ajudar, mas duvido se estou fazendo algo errado - está usando o dígito A como um separador é a melhor maneira de fazer isso, graças a comingstorm. Eu encurtei a corda comprimida um pouco mais. Como eu mencionei nos comentários, casos de uso real geralmente resultaria em uma seqüência ainda mais curta. Como você está codificando bits, você provavelmente quer usar um RLE baseado em bits em vez de um baseado em bytes. Neste contexto, você deve considerar Elias gamma codificação (ou alguma variante do mesmo) para codificar eficientemente seus comprimentos de execução. Uma primeira aproximação razoável para o seu formato de codificação pode ser: primeiro bit igual ao primeiro bit da seqüência descompactada (para definir a polaridade inicial) restantes bits: Elias codificados comprimentos de sucessivos bits executados (alternando 1 e 0) Como você sabe quantos bits Estão em sua seqüência de caracteres descompactada, você não precisa de um código de terminação você pode apenas adicionar qualquer preenchimento binário necessário como bits arbitrários. Observe que é sempre possível para a compactação de comprimento de execução expandir sua seqüência de bits se você estiver preocupado com isso, você pode adicionar outro bit inicial para indicar se seus dados estão em formato compactado ou descompactado, limitando a sobrecarga de compressão a 1 bit. 264 bits, que são apenas 33 bytes, e que estão em base64 apenas 44 bytes. Penso que esta (muito pequena) quantidade de informação é dificilmente compressível. A representação escassa nulvinge refere-se também apenas armazena os elementos não-zero e seus valores (como você tem apenas 0/1), ou seja, no seu caso apenas o índice dos bits não zero. Mas como você tem 264 bits possíveis - você precisa de 9 bits para o índice, o que significa, no caso de você ter mais de 29 entradas não zero, você precisa já mais do que original. Talvez a sua pergunta seja formulada erradamente, mas eu não vejo como 264 bits podem levar a uma intimidante base64 string (Como você gerá-lo - talvez você não traduzir 264 bits, mas 264 ASCIIs chars (com o valor 0 e 1) - que Explicaria sua seqüência longa de resultado). Respondeu Sep 29 11 at 14:38

No comments:

Post a Comment