Javascript:将byte []数组编码为base64

时间:2014-07-15 15:08:58

标签: javascript encoding base64 bytearray

我有一个简单的问题:如何将byte [ ]编码为base64格式?

我有以下代码:

var hash = CryptoJS.SHA1("payLoad");
    document.writeln(hash);
    hash = hash.toString();

    var bytes = [];
for (var i = 0; i < hash.length; ++i)
{
    bytes.push(hash.charCodeAt(i));
}

现在我想将bytes[ ]编码为base64格式。有没有图书馆可以做到这一点?

我将非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

btoaatob使用字符串,将它们视为字节数组,因此,要使用这两个函数,应首先转换整数数组(前提是它们的范围为0- 255)转换为字符串。

对我有用的是以下两个简单功能:

  b64encode = function(x) { 
    return btoa(x.map(function(v){return String.fromCharCode(v)}).join(''))
  };
  b64decode = function(x) {
    return atob(x).split('').map(function(v) {return v.codePointAt(0)});
  };

我相信您可以用更好的风格来写它们。

在您的情况下,

尽管您的数据已经是正确的格式,但是在将其转换为32位整数数组之前。我认为,您将数组称为bytes的事实只会误导您。之后,btoa转换了array肿的数组,而不是hash中的字节数组。