Encoding 为什么';Ascii85编码是否允许动态压缩?

Encoding 为什么';Ascii85编码是否允许动态压缩?,encoding,compression,ascii,ascii85,base85,Encoding,Compression,Ascii,Ascii85,Base85,根据维基百科: [Ascii85使用]ASCII字符33(!)到117(u)(包括在内)(表示基数为85的数字0到84)以及字母z(作为特殊情况,表示32位0值) [btoa]版本4.2为一组所有ASCII空格字符添加了“y”异常 虽然0数据可能非常常见,但使用z压缩0似乎是一种任意优化,并不总是有用的 同样,只有在原始字节包含相邻空格时,才使用较少频率的y。空间的Unicode编码实际上是20 00所以0x202020在Unicode文本中并非所有常见的 二进制数据通常有相邻的00,但它也经常

根据维基百科:

[Ascii85使用]ASCII字符33(!)到117(u)(包括在内)(表示基数为85的数字0到84)以及字母z(作为特殊情况,表示32位0值)

[btoa]版本4.2为一组所有ASCII空格字符添加了“y”异常

虽然0数据可能非常常见,但使用
z
压缩0似乎是一种任意优化,并不总是有用的

同样,只有在原始字节包含相邻空格时,才使用较少频率的
y
。空间的Unicode编码实际上是
20 00
所以
0x202020
在Unicode文本中并非所有常见的

二进制数据通常有相邻的
00
,但它也经常包含相邻的
FF

文本数据通常包含相邻的空格,但也通常包含相邻的制表符或相邻的新行字符

似乎频率分析和使用9或10个字符(Ascii字符118-126/127或
v
~
/DEL)来表示9/10最常见的32位值可能会导致更好的压缩

压缩字符到32位值的映射可能位于
之间的编码字符串的开头。对于4个重复字节的32位值,32位值可以缩写为重复的十六进制值

例如:

二进制数据(192字节):

00 00 00 FF FF FF 20 20 20 20 2D 2D 2D 09 09 09 0D 00 0A 00

00 00 00 FF FF FF 20 20 20 20 2D 2D 2D 09 09 09 0D 00 0A 00

00 00 00 FF FF FF 20 20 20 20 2D 2D 2D 09 09 09 0D 00 0A 00

00 00 00 FF FF FF 20 20 20 20 2D 2D 2D 09 09 09 0D 00 0A 00

00 00 00 FF FF FF 20 20 20 20 2D 2D 2D 09 09 09 0D 00 0A 00

00 00 00 FF FF FF 20 20 20 20 2D 2D 2D 09 09 09 0D 00 0A 00

00 00 00 FF FF FF 20 20 20 20 2D 2D 2D 09 09 09 0D 00 0A 00

00 00 00 FF FF FF 20 20 20 20 2D 2D 2D 09 09 09 0D 00 0A 00

注意空格
20
、连字符
2D
、制表符
09
和Unicode回车换行符
0D 00 0A 00

可编码为(79字节)


使用这种压缩的编码方法有优点吗?为什么各种Ascii85规范在压缩方面没有更积极的作用?

因为您通常会在使用Ascii85编码之前使用压缩程序,这比建议的特殊编码做得更好。

因为您通常会在使用Ascii85编码之前使用压缩程序,这比建议的即席编码做得好得多。

在一些应用程序中,不必扫描整个内容就可以找到编码字符串的第n个八位字节,这非常有用。压缩会干扰这一点。然而,对于其他应用,某些形式的压缩可能是有用的。如果可以使用85个以上的不同字符,则base-85编码将允许使用主集合之外的字符进行轻松压缩。即使一个字符限制为一组精确的85个字符,五个base-85字符的序列数量也大于一个、两个、三个和四个base-256字节的序列组合数量,因此可以使用一些特殊的字符组合来指示某些字符值的运行。最大的问题是,这样做将丧失在编码数据流中执行随机搜索的能力。

对于某些应用程序,在不必扫描整个数据流的情况下找到编码字符串的第n个八位组是很有用的。压缩会干扰这一点。然而,对于其他应用,某些形式的压缩可能是有用的。如果可以使用85个以上的不同字符,则base-85编码将允许使用主集合之外的字符进行轻松压缩。即使一个字符限制为一组精确的85个字符,五个base-85字符的序列数量也大于一个、两个、三个和四个base-256字节的序列组合数量,因此可以使用一些特殊的字符组合来指示某些字符值的运行。最大的问题是这样做会丧失在编码数据流中执行随机搜索的能力。

如果您使用预压缩数据进行编码,那么为什么还要进行
z
y
优化呢?但在任何情况下,我的理解是,ASCI85经常用于对未压缩的明文进行编码。如果您有特殊字符运行的特殊情况,为什么不让它们与手头的二进制文件相关呢?您不必担心它们。如果您使用预压缩数据编码,那么为什么还要担心
z
y
优化呢?但在任何情况下,我的理解是,ASCI85经常用于对未压缩的明文进行编码。如果您有特殊字符运行的特殊情况,为什么不将它们与手头的二进制文件关联起来呢?您不必为它们操心。