Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-将20字节的值转换为基数为10的数字_Java_Bytearray - Fatal编程技术网

Java-将20字节的值转换为基数为10的数字

Java-将20字节的值转换为基数为10的数字,java,bytearray,Java,Bytearray,我有一个关于Java中字节到int/long转换的查询 有: 整数为4字节 长8字节 如何存储占用8个字节以上的值 Java将如何表示这一点(例如:内存中的8+字节值)?就是为此而设计的。在内部,它用可以看作多项式的(可变长度)向量表示数字。它允许有效地操作任意大小的整数,只要有足够的空闲内存。其他语言有类似的结构或库;例如,该库遵循类似的方法 注意,尽管可以从byte[]two的补码构建bigingers,并且可以再次转换为那些byte[]s,但它们在内部使用了更有效的int[]表示。当有

我有一个关于Java中字节到int/long转换的查询

有:

  • 整数为4字节
  • 长8字节
如何存储占用8个字节以上的值 Java将如何表示这一点(例如:内存中的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!您可能实现了一些不正确的东西!请用您尝试的代码和收到的输出编辑问题!