javascript - 将长数字编码为更高基数编号系统的字符

标签 javascript encoding hex file-transfer radix

我有一个由长整数列表组成的巨大数组,例如[196879, 37893, 137892]。该数组有 450 万个整数长,占用 21MB,这对于通过 JSON 传输到我的网页来说是很大的。

我的问题是:有没有办法将这些整数编码为字母数字值以减少文件大小?我正在考虑类似于十六进制的东西,其中 a=10, b=11, c=12...,但基数更高。如果我们有 0-9、a-z 和 A-Z,理论上我们可以构建一个基于 62 的编号系统,如下所示:9Eo, bZ3, xQ, 9p1, wNd。是否存在这样的文件格式,或者是否有 JavaScript 工具可以以这种方式对数组进行编码和解码?

最佳答案

我相信您可以创建一个整数数组,将其转换为二进制,然后上传该 blob。每个整数将占用 4 个字节。

var count = 14.5 * 1000000;
var integers = new Int32Array(count);
var min = -100000;
var max = 100000;

for (var i = 0; i < count; i++) {
    integers[i] = Math.floor(Math.random() * (max - min)) + min;
}

var blob = new Blob([integers]);

var data = new FormData();
data.append('data', blob);

$.ajax({
    type: 'POST',
    url: '/some_page',
    data: data,
    processData: false,
    contentType: false
}).done(function(data) {
   // TODO
});

关于javascript - 将长数字编码为更高基数编号系统的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119819/

相关文章:

Perl 下拉菜单和 Unicode

C - 读取十六进制数并检查是否小于零 scanf()

python - 强制 python 将十六进制显示为十六进制

javascript - appedChild() 覆盖 div

javascript - 使用 jQuery 遍历树

javascript - Chrome 自动填充未设置密码值

javascript - Javascript 中的服务器代码

在全 Angular 和半 Angular 形式之间转换 UTF8 字符串的 JavaScript 函数

php - 从文件加载 HTML 时保留 utf8

c# - 将 int 转换为带前导零的十六进制