
如题:
__d('BitMap', [], (function a(b, c, d, e, f, g) { var h = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_'; function i() { 'use strict'; this.$BitMap1 = []; } i.prototype.set = function(l) { 'use strict'; this.$BitMap1[l] = 1; return this; }; i.prototype.toString = function() { 'use strict'; var l = []; for (var m = 0; m < this.$BitMap1.length; m++) l.push(this.$BitMap1[m] ? 1 : 0); return l.length ? k(l.join('')) : ''; }; i.prototype.toCompressedString = function() { 'use strict'; if (this.$BitMap1.length === 0) return ''; var l = [], m = 1, n = this.$BitMap1[0] || 0, o = n.toString(2); for (var p = 1; p < this.$BitMap1.length; p++) { var q = this.$BitMap1[p] || 0; if (q === n) { m++; } else { l.push(j(m)); n = q; m = 1; } } if (m) l.push(j(m)); return k(o + l.join('')); }; function j(l) { var m = l.toString(2), n = '0'.repeat(m.length - 1); return n + m; } function k(l) { var m = (l + '00000').match(/[01]{6}/g), n = ''; for (var o = 0; o < m.length; o++) n += h[parseInt(m[o], 2)]; return n; } f.exports = i; }), null); 1 btjoker 2017-01-05 13:00:04 +08:00 base64 和图片相关 你这代码没头没尾的, 让人猜? |
2 Nitroethane 2017-01-05 13:01:49 +08:00 via Android 函数的命名方式也是奇葩 |
3 Nutlee 2017-01-05 13:15:51 +08:00 这代码是压缩后的代码又格式化过的吧,建议看找源代码看啊 压缩会优化命名..... |
4 alwayshere 2017-01-05 13:23:31 +08:00 @Nitroethane 这是压缩后的代码,函数命名全变了 |
5 polun 2017-01-05 13:45:52 +08:00 感觉像压缩字符串的。 |
6 rekulas 2017-01-05 13:56:55 +08:00 感觉像压缩二进制数据的,如果是,作者技术不错啊 |
7 enenaaa 2017-01-05 14:10:12 +08:00 用行程编码方式将二进制压缩成字符串, j 是具体的转换函数。 |
8 enenaaa 2017-01-05 14:27:29 +08:00 上面一条说得不太对, 应该是类似 base64 那样的转换编码。 |
9 iEverX 2017-01-05 14:29:45 +08:00 bitmap 只有 0 和 1 , toCompressedString 里面的 l 记录了连续的 0 或者 1 的次数, j 函数想字符串前面加的 0 是为了能够区分连续的两个次数。 o + l.join('')是压缩后的 01 字符串 |
10 davidzd 2017-01-05 15:16:57 +08:00 压缩字符串啊。。 |
11 limerick 2017-01-05 15:26:52 +08:00 toString 对二进制数据进行 base64 。 toCompressedString 对数据进行压缩处理然后进行 base64 。不过这个压缩处理要看压缩对象了,他这个处理方式是直接根据二进制中 0 , 1 的重复次数进行压缩。如果分布不是很连续感觉压缩之后打了很多。 |
12 MrSong0607 OP |