1 回答
TA贡献1906条经验 获得超2个赞
如果你想逐行翻译该函数:
// This is ES6 code; if you want better browser compatibility
// use the ES5 variant.
import { gunzipSync, strToU8, strFromU8 } from 'fflate';
const decompress = str => {
// atob converts Base64 to Latin-1
// strToU8(str, true) converts Latin-1 to binary
const bytes = strToU8(atob(str), true);
// subarray creates a new view on the same memory buffer
// gunzipSync synchronously decompresses
// strFromU8 converts decompressed binary to UTF-8
return strFromU8(gunzipSync(bytes.subarray(4)));
}
如果您不知道 ES6 是什么:
在您的 HTML 文件中:
<script src="https://cdn.jsdelivr.net/npm/fflate/umd/index.js"></script>
在你的JS中:
var decompress = function(str) {
var bytes = fflate.strToU8(atob(str), true);
return fflate.strFromU8(fflate.gunzipSync(bytes.subarray(4)));
}
我想提一下,如果您要在最后累积成一个字符串,那么流几乎完全没有用处,因此 C# 代码不是最佳的。同时,由于您使用的是标准库,因此它是唯一的选择。
此外,如果可能的话,我强烈建议使用回调变体(即gunzip代替gunzipSync),因为它在单独的线程上运行,以避免导致浏览器冻结。
添加回答
举报