Encoding 为什么';Ascii85编码是否允许动态压缩?
根据维基百科: [Ascii85使用]ASCII字符33(!)到117(u)(包括在内)(表示基数为85的数字0到84)以及字母z(作为特殊情况,表示32位0值) [btoa]版本4.2为一组所有ASCII空格字符添加了“y”异常 虽然0数据可能非常常见,但使用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,但它也经常
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经常用于对未压缩的明文进行编码。如果您有特殊字符运行的特殊情况,为什么不将它们与手头的二进制文件关联起来呢?您不必为它们操心。