gpt4 book ai didi

javascript - Java 将 byte[] 转换为 BigInteger

转载 作者:搜寻专家 更新时间:2023-10-31 20:31:48 25 4
gpt4 key购买 nike

在 Java 中,我可以像这样从 String 得到一个 BigInteger:

public static void main(String[] args) {
String input = "banana";
byte[] bytes = input.getBytes(StandardCharsets.UTF_8);
BigInteger bigInteger = new BigInteger(bytes);
System.out.println("bytes: " + Arrays.toString(bytes));
System.out.println("bigInteger: " + bigInteger);
}

哪个会打印

bytes:      [98, 97, 110, 97, 110, 97]
bigInteger: 108170603228769

我正在尝试使用 big-integer library 在 JavaScript 中获得相同的结果.但是正如您所看到的,这段代码返回了一个不同的值:

var bigInt = require('big-integer');

function s(x) {
return x.charCodeAt(0);
}

var bytes = "banana".split('').map(s);
var bigInteger = bigInt.fromArray(bytes);
console.log("bytes: " + bytes);
console.log("bigInteger: " + bigInteger);

输出:

bytes:      98,97,110,97,110,97
bigInteger: 10890897

有没有办法用 JavaScript 获得我在 Java 中获得的结果?如果数组的长度为 32,这是否也可能?

最佳答案

BigInteger(byte[]) bigInt.fromArray() 取二进制补码表示采用默认基数为 10 的数字数组。

正如 dave_thompson_085 所说,您可以使用 base 256:

var bigInteger = bigInt.fromArray(bytes, 256);
console.log("bigInteger: " + bigInteger); // 108170603228769

关于javascript - Java 将 byte[] 转换为 BigInteger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52622776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com