用JavaScript解压缩bzip2数据

时间:2019-04-08 06:26:50

标签: javascript bzip2 sharpcompress

我最终不得不使用如下所示的Javascript文件中的一些数据:

注意:base64仅用于说明。

function GetTripsDataCompressed() { return 'QlpoOTFBWSZTWdXoWuEDCAgfgBAHf/.....=='; }

GetTripsDataCompressed()返回一个 base64 字符串,该字符串派生为使用 JSON.NET 转换为JSON的对象数组,然后使用以下命令将结果字符串压缩为bzip2 SharpCompress,并将产生的内存流Base64编码。

这是我所拥有的,无法更改。

我正在努力寻找一个bzip2 JavaScript实现,它将实现以下结果:

var rawBzip2Data = atob(GetTripsDataCompressed());

并将rawBzip2Data转换回为JSON数组的字符串。我不能使用类似compressjs之类的东西,因为我需要支持IE 10,并且因为它使用typed arrays这意味着对IE10的支持已经消失。

所以看来,最好的选择是https://github.com/antimatter15/bzip2.js,但是因为我还没有创建档案,而只是bzip2一个字符串,所以这样做后会引发Uncaught No magic number found的错误。

var c = GetTripsDataCompressed();
c = atob(c);
var arr = new Uint8Array(c);
var bitstream = bzip2.array(arr);
bzip2.simple(bitstream);

那么有人可以在这里帮助我使用符合IE 10的脚本从JavaScript解压缩BZip2,Base64编码的字符串吗?最终,我不在乎它是否使用https://github.com/antimatter15/bzip2.js或其他一些本机JavaScript实现。

1 个答案:

答案 0 :(得分:1)

在我看来,答案在自述文件中:

  

decompress(bitstream,size [,len])对单个块进行主要的解压缩。如果检测到它是最后一个块,它将返回-1,否则它将返回包含解压缩数据的字符串。如果要将输出限制为一定的字节数,请设置len参数。

此外,请记住,存储库没有附加许可证。如果要使用代码,则需要与作者联系。考虑到该存储库已有八年的历史,这可能会很棘手。

另一方面,Bzip2算法本身是开源的(类似于BSD的许可证),因此您可以自己在Javascript中重新实现它。仅有几百行相对简单的代码。

相关问题