将字节值数组转换为base64编码的字符串并打破长行,Javascript(代码高尔夫)

zwo*_*wol 6 javascript firefox-addon

这个JavaScript函数接受一个数字数组(在0-255范围内)并转换为base64编码的字符串,然后在必要时断开长行:

function encode(data)
{
  var str = "";
  for (var i = 0; i < data.length; i++)
    str += String.fromCharCode(data[i]);

  return btoa(str).split(/(.{75})/).join("\n").replace(/\n+/g, "\n").trim();
}
Run Code Online (Sandbox Code Playgroud)

你能用更少的代码做同样的事情吗?你能做到这样跑得更快吗?可移植性没有对象,如果你愿意,可以使用全新的语言功能,但必须使用JavaScript.

Ano*_*mie 13

我有另一个条目:

function encode(data)
{
    var str = String.fromCharCode.apply(null,data);
    return btoa(str).replace(/.{76}(?=.)/g,'$&\n');
}
Run Code Online (Sandbox Code Playgroud)

缩小,88个字符:

function e(d){return btoa(String.fromCharCode.apply(d,d)).replace(/.{76}(?=.)/g,'$&\n')}
Run Code Online (Sandbox Code Playgroud)

或者如果你想要尾随换行符,则包含85个字符:

function e(d){return btoa(String.fromCharCode.apply(d,d)).replace(/.{1,76}/g,'$&\n')}
Run Code Online (Sandbox Code Playgroud)