Java-将20字节的值转换为基数为10的数字
我有一个关于Java中字节到int/long转换的查询 有:Java-将20字节的值转换为基数为10的数字,java,bytearray,Java,Bytearray,我有一个关于Java中字节到int/long转换的查询 有: 整数为4字节 长8字节 如何存储占用8个字节以上的值 Java将如何表示这一点(例如:内存中的8+字节值)?就是为此而设计的。在内部,它用可以看作多项式的(可变长度)向量表示数字。它允许有效地操作任意大小的整数,只要有足够的空闲内存。其他语言有类似的结构或库;例如,该库遵循类似的方法 注意,尽管可以从byte[]two的补码构建bigingers,并且可以再次转换为那些byte[]s,但它们在内部使用了更有效的int[]表示。当有
- 整数为4字节
- 长8字节
byte[]
two的补码构建biginger
s,并且可以再次转换为那些byte[]
s,但它们在内部使用了更有效的int[]
表示。当有疑问时
示例代码如下:
import java.math.*;
public class T {
public static void main(String[] args) {
for (String s: args) {
// build from base-16 string representation
BigInteger bi = new BigInteger(s, 16);
System.out.println("The decimal representation of \n\t"
+ s + " is \n\t" + bi);
// (bi.toString() generates base-10 strings)
}
}
}
现在编译并运行:
javac T.java && java T 8df0c57980d7fa44e3a7286cfd9a4589c5eb1eb0
按预期产出:
The decimal representation of
8df0c57980d7fa44e3a7286cfd9a4589c5eb1eb0 is
810337079999566280018410685437385308775358602928
可能是
biginger
?格式是2的补码。您的意思是类似于biginger
?()是的,我同意,但假设我将我的20字节数据传递给BigIntegrater,如何验证它返回的数字,如果正确与否?除了BigInteger,还有其他方法可以实现这一点吗?假设我的20个“是”数据-->8DF0C579080D7FA44E3A7286CFD9A4589C5EB1EB0(BCD表示法)转换后的基10值-->8103370799995661808442242022266022424802268880(结果除外)BigInteger给我的是-->(-651164557333163818527414727889771088057940048)我不明白这个以10为基数的数字是如何推导出来的。@yash-biginger不能直接将BCD转换成biginger!您可能实现了一些不正确的东西!请用您尝试的代码和收到的输出编辑问题!