我正在尝试将 BigInteger 数字转换为其十六进制格式,以便我可以将其用于进一步的 HMAC 计算。我已经使用以下帖子来获取执行此操作的代码。
该代码对于正 BigInteger Numbers 工作得非常好,但在用于负 BigInteger Numbers 时不会产生正确的结果。
例如:考虑以下链接帖子中的代码片段:
function intToWords(num, lengthInBytes) {
var bigInt = new BigInteger();
bigInt.fromString(num, 10); // radix is 10
var hexNum = bigInt.toString(16); // radix is 16
if (lengthInBytes && lengthInBytes * 2 >= hexNum.length) {
hexNum = Array(lengthInBytes * 2 - hexNum.length + 1).join("0") + hexNum;
}
return CryptoJS.enc.Hex.parse(hexNum);
}
我将num值传递为-52并将lengthInBytes值传递为8。生成的hexNum(intToWords 函数的第三行)是“-34”(而不是“ffffffffffffffcc”)
有人可以帮我正确地将输入数字转换为正确的十六进制格式吗?