Base 64 字符串神奇地变大.. 有时
Base 64 string magically gets bigger.. sometimes
我正在处理最奇怪的问题。我有一个很大的字符串(大约 500 万字节),我正试图缩小它。在我缩小它之前,我试图 'reconstruct' 它是这样的:
for(var i = 0; i < data.length; i++){
var bb64 = "";
var sb64 = "";
//the big-ass string (~5 million bytes)
bb64 = data[i];
//initially one sixth of the big-ass string
sb64 = bb64.substring(0, bb64.length/6);
var start = bb64.length/6;
var end = bb64.length;
//for testing, re-add the remaining 5/6 characters
for(var x = start; x < end; x++){
sb64 += bb64[x]
}
//theoretically, these should be the same for each iteration of i
console.log(bb64.length);
console.log(sb64.length);
/*actual results:
i = 0:
bb64:5458944
sb64:5458944
i = 1:
bb64:5563292
sb64:42651908
i = 2:
bb64:5555276
sb64:42590452
*/
}
然后我用其他大字符串(~300 万字节)对其进行了测试,结果是:
i = 0:
bb64:3132968
sb64:24019424
i = 1:
bb64:3635916
sb64:3635916
i = 2:
bb64:3791560
sb64:29068632
有人任何知道到底发生了什么吗..?
提前致谢!
"length/6"除法没有四舍五入,使用非四舍五入的值作为键会有不可预知的结果。
我正在处理最奇怪的问题。我有一个很大的字符串(大约 500 万字节),我正试图缩小它。在我缩小它之前,我试图 'reconstruct' 它是这样的:
for(var i = 0; i < data.length; i++){
var bb64 = "";
var sb64 = "";
//the big-ass string (~5 million bytes)
bb64 = data[i];
//initially one sixth of the big-ass string
sb64 = bb64.substring(0, bb64.length/6);
var start = bb64.length/6;
var end = bb64.length;
//for testing, re-add the remaining 5/6 characters
for(var x = start; x < end; x++){
sb64 += bb64[x]
}
//theoretically, these should be the same for each iteration of i
console.log(bb64.length);
console.log(sb64.length);
/*actual results:
i = 0:
bb64:5458944
sb64:5458944
i = 1:
bb64:5563292
sb64:42651908
i = 2:
bb64:5555276
sb64:42590452
*/
}
然后我用其他大字符串(~300 万字节)对其进行了测试,结果是:
i = 0:
bb64:3132968
sb64:24019424
i = 1:
bb64:3635916
sb64:3635916
i = 2:
bb64:3791560
sb64:29068632
有人任何知道到底发生了什么吗..?
提前致谢!
"length/6"除法没有四舍五入,使用非四舍五入的值作为键会有不可预知的结果。