1

我正在寻找最合适的编码或方法来将字节压缩为可以使用类似 ReadLine 的命令读取的字符,该命令仅识别可读字符并在行尾字符处终止。实现它可能有一种常见的做法,但我对编码知之甚少。

目前,我将字节输出为十六进制字符串,因此我需要 2 个字节来表示 1 个字节。它运作良好,但速度很慢。例如:值为 255 的字节表示为 'FF'。

我敢肯定它可能会小 3 或 4 倍,尽管由于我正在输出 MP3 数据而存在限制,但我不知道如何。我应该只是压缩我的字符串还是会有太多开销?

ASCII85 会包含随机空字节和 EndOfLine 还是我对它安全?

4

1 回答 1

1

不要压缩 mp3 文件,那样不会获得太多(或任何东西)。

我有点失望,您在询问之前没有阅读Ascii85,因为我认为 Wikipedia 文章相当清楚地解释了它仅使用可打印的 ASCII 字符;所以,没有行尾或空字节。它非常高效,而且转换也相当简单快捷——将数据拆分为 4 字节整数;您将通过重复将 int 值除以 85 并取模 + 33 的 ASCII 值将这些转换为仅五个 Ascii85 数字。

您也可以考虑使用 Base64 或 UUEncode。这些是相当流行的(例如在电子邮件附件中使用),因此您会发现许多图书馆都在准备这些。但它们的效率较低。

于 2012-09-30T21:12:43.383 回答