javascript - 字符串中包含的以 10 为基数的大数字的最佳压缩

标签 javascript string algorithm compression

我正在为包含 10 位数字的字符串编写压缩和解压缩函数。我认为,由于仅对 10 个字符进行操作,因此存在可以表示大字符串的小得多的字符串。压缩后的结果以 ISO-8859-7 编码,所以我可以在结果字符串中使用 256 个字符

例如,我想获取一个表示 1000 位数字的字符串(例如 this one)并“压缩它”。这些长度的数字超过了我正在使用的语言 JavaScript 中的数字类型。因此,数字操作/转换是不可能的。我使用的压缩软件(shoco)不压缩数字。完全没有。

我该怎么做呢?是否有某种算法可用于压缩数字?我不是在寻找执行速度,而是在寻找大多数数字的最佳压缩,而不仅仅是作为示例给出的数字。

最佳答案

如果您以三位数字为一组处理数字,则可以用 10 位来表示每个三元组,而浪费很少。然后,您“只”需要从 10 位三元组流中创建一个 8 位八位字节流,这将需要一定量的位移,但并不十分复杂。

假定您的号码由 3 位数字的倍数组成(您可以用前导零填充它)或者您知道它包含多少位数字(在这种情况下,您可以在末尾用尾随零填充它)。如果您将子序列编码为 50 位单元,您将有足够的代码空间来编码最多 15 位的数字序列,而不仅仅是 15 位,这将避免填充的需要。在一种使用 53 位浮点作为常见数字类型的语言中,您几乎无法摆脱这种情况,但这可能值得也可能不值得额外的复杂化。

关于javascript - 字符串中包含的以 10 为基数的大数字的最佳压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35375291/

相关文章:

java - 指纹图像的图像分割

c# - 从几个集合之一中获取元素

javascript - 如何创建 join() 函数

javascript - Web 浏览器中的 ANSI 与 UTF-8

javascript - 如何将 Jquery 添加到 MasterPage 2013

java - 按字符拆分字符串

c++ - 如何用stride遍历一个n维数组

javascript - 背景位置 y 的断断续续的 JavaScript 动画

string - VBA 修剪留下前导空白

Java将从数据库返回的日期值拆分为单独的日期和时间字符串