gpt4 book ai didi

java - BigInteger(String) 和 BigInteger(byte[]) 不相等

转载 作者:行者123 更新时间:2023-11-30 07:56:35 28 4
gpt4 key购买 nike

我原以为 BigInteger 类中的两个构造函数 BigInteger(String)BigInteger(byte[]) 的行为相似,但事实并非如此。

为什么两个 BigInteger 不相等?如何从字节数组创建 BigInteger

String hex = "94B4";
byte[] b = DatatypeConverter.parseHexBinary(hex); // -108, -76

BigInteger b1 = new BigInteger(hex, 16); //38068
BigInteger b2 = new BigInteger(b); //-27468

最佳答案

看起来 byte[] 构造函数将输入视为常规 2 的补码数据,而十六进制构造函数将其视为十六进制字符串。

使用 new BigInteger(int signum, byte[] magnitude) 可以强制该值为正,因此 new BigInteger(1, b) 将是38068

关于java - BigInteger(String) 和 BigInteger(byte[]) 不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42000919/

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