如果在javascript中将base64图像转换为十六进制,则内存不足

时间:2017-12-24 19:41:35

标签: javascript node.js type-conversion

我尝试使用此功能将带有7 MB解码base64的图片转换为javascript中的十六进制

   exports.toHex = function(s){
     var str='';
      for (var i = 0, l = s.length; i < l; i ++) {
          var hex = Number(s.charCodeAt(i)).toString(16);
          str+=(hex.length > 1 && hex || "0" + hex);
          }          
     return str;
};

带有小字符串它可以工作,但是有一个大字符串它会给我这个错误

  

致命错误:CALL_AND_RETRY_LAST分配失败 - 处理完毕   存储器

     

&lt; ---最后几个GC ---&gt;

     

49456 ms:Scavenge 1398.9(1457.5) - &gt; 1398.9(1457.5)MB,7.1 / 0   ms(自上次GC以来的1步+ 6.4 ms)[分配失败]   [增量标记延迟标记扫描]。 51290 ms:标记扫描   1398.9(1457.5) - &gt; 1398.9(1457.5)MB,1823.1 / 0 ms(自标记开始以来,步长为2步+ 8.4 ms,最大步长为6.4 ms)[最后的手段gc]。
  53092ms:标记扫描1398.9(1457.5) - &gt; 1398.9(1457.5)MB,1801.9 / 0   ms [last resort gc]。

     

&lt; --- JS stacktrace ---&gt;

     

==== JS堆栈跟踪======================================== =

     

安全上下文:0x3f4a60ab4629       2:toHex [/modules/Strings.js:~2]   [pc = 0x38e2d4f84159](这= 0x2f2cfdf8d519,str = 0x15dec5a04101很长的字符串[9610800])       3:编码[/app.js:18]   [pc = 0x38e2d4f6e7bc](这= 0x2f2cfdf8d599,缓冲区= 0x15dec5a04101非常离......

     

完成。

如何用大字符串实现这一目标?

0 个答案:

没有答案