试图在Base64中从javaScript中的BigInteger编码字节数组

试图在Base64中从javaScript中的BigInteger编码字节数组,javascript,arrays,encoding,base64,biginteger,Javascript,Arrays,Encoding,Base64,Biginteger,我试图用javaScript实现完全相同的java算法: String s = "6332878812086272"; // For example long id = Long.valueOf(s); final byte[] idBytes = BigInteger.valueOf(id).toByteArray(); final String idBase64 = Base64.getEncoder().encodeToString(idBytes); 这可能是因为javaScript不

我试图用javaScript实现完全相同的java算法:

String s = "6332878812086272"; // For example
long id = Long.valueOf(s);
final byte[] idBytes = BigInteger.valueOf(id).toByteArray();
final String idBase64 = Base64.getEncoder().encodeToString(idBytes);

这可能是因为javaScript不能处理像java BigInteger/long这样的大数字吗?有图书馆推荐吗?

您可能可以尝试以下方法:

// number -> number in base 2 as string
var nbrAsBits = (6332878812086272).toString(2); //"10110 01111111 10111000 01000000 00000000 00000000 00000000"

// number in base 2 as string -> array of bytes (8 bits) as numbers
var nbrAsIntArray = convertionTool(nbrAsBits); //[22, 127, 184, 64, 0, 0, 0]

// array of bytes as numbers -> bytes
var nbrAsByteArray= new Uint8Array(bytes);

// concat everything in a string
var str = "";
for(var i=0; i<byteArray.length; i++) {
    str += String.fromCharCode(byteArray[i]);
}

// get the base64
btoa(str); //"Fn+4QAAAAA=="
//数字->基数2中的数字作为字符串
变量nbrAsBits=(6332878812086272).toString(2)//"10110 01111111 10111000 01000000 00000000 00000000 00000000"
//基2中的数字为字符串->字节数组(8位)为数字
var nbrAsIntArray=转换工具(nbrAsBits)//[22, 127, 184, 64, 0, 0, 0]
//字节数组作为数字->字节
var nbrAsByteArray=新的UINT8数组(字节);
//把所有的东西都串起来
var str=“”;
对于(var i=0;i