Java 从字符转换为长字符

Java 从字符转换为长字符,java,arrays,long-integer,biginteger,Java,Arrays,Long Integer,Biginteger,我正在创建一个大整数类。我读入两个long作为函数参数,我想做的是让long读入中的每个数字占据数组的一个索引 我将long转换为字符串,然后是char数组,并将它们临时存储在某个地方。这很好,打印出来的数字与读入的数字完全相同。现在我要做的是将它们添加到一个新数组中,并使它们的数据类型尽可能长。我制作了两个数组来处理这个问题 问题是,当我尝试将字符强制转换为long时,它会给我一个完全不同的值。它似乎在把字符转换成它自己的数字?角色类似乎没有任何方法可以转换为长角色 最好的方法是什么 编辑:似

我正在创建一个大整数类。我读入两个long作为函数参数,我想做的是让long读入中的每个数字占据数组的一个索引

我将long转换为字符串,然后是char数组,并将它们临时存储在某个地方。这很好,打印出来的数字与读入的数字完全相同。现在我要做的是将它们添加到一个新数组中,并使它们的数据类型尽可能长。我制作了两个数组来处理这个问题

问题是,当我尝试将字符强制转换为long时,它会给我一个完全不同的值。它似乎在把字符转换成它自己的数字?角色类似乎没有任何方法可以转换为长角色

最好的方法是什么

编辑:似乎如果我将长数组更改为int数组,然后使用Character.getNumericValuechar ch,那么将其正确地添加到数组中会起作用

既然我计划在这个函数的末尾返回一个long,我应该确保这些数组是安全的吗?或者将它们存储为数组中的整数就可以了?谢谢

public static long hugeMultiplication(long value1, long value2){
    System.out.println("originalvalue: "+value1);
    int lengthOfWordOne = String.valueOf(value1).length();
    int lengthOfWordTwo = String.valueOf(value1).length();
    System.out.println("length1: "+lengthOfWordOne);
    System.out.println("length2: "+lengthOfWordTwo);

    long[] numberOne = new long[lengthOfWordOne+1];
    long[] numberTwo = new long[lengthOfWordTwo+1];

    //make those longs into string to convert char array
    char[] tempValueOne = String.valueOf(value1).toCharArray();
    char[] tempValueTwo = String.valueOf(value2).toCharArray();

    //copy each value of a char array to long array and change to long again
    //this will set up the array having each number in it so we can do the multiplication
    for (int i = 0; i < tempValueOne.length; i++){
        numberOne[i] = (long) tempValueOne[i];
    }


    for (int i = 0; i < numberOne.length; i++){
        System.out.print(numberOne[i]);
    }
长一=字符。getNumericValue'1'

长一=字符。getNumericValue'1'


char和long之间唯一真正的区别是数据大小。字符通常为1字节,而长字符通常为8字节。当您将长字符转换为字符串时,您正在创建一个ASCII字符数组来表示该数字。例如,长12345将在内存中表示为:

00000000 00000000 00000000 00000000 00000000 00000000 00110000 00111001
但当转换为一个1字节字符数组的字符串时,它看起来更像这样:

00110001 00110010 00110011 00110100 00110101
其中每个字节都是字符串中的一个字符。第一个字节是ASCII“1”、“2”等


当您将每个字符转换回long时,实际上是在获取字符串中每个字符的ASCII值。所以字符“1”在内存中实际上表示为一个整数49,“2”表示为“50”,依此类推。您需要做的是将字符串作为一个整体转换回整数表示形式。

字符和长字符之间唯一真正的区别是数据大小。字符通常为1字节,而长字符通常为8字节。当您将长字符转换为字符串时,您正在创建一个ASCII字符数组来表示该数字。例如,长12345将在内存中表示为:

00000000 00000000 00000000 00000000 00000000 00000000 00110000 00111001
但当转换为一个1字节字符数组的字符串时,它看起来更像这样:

00110001 00110010 00110011 00110100 00110101
其中每个字节都是字符串中的一个字符。第一个字节是ASCII“1”、“2”等


当您将每个字符转换回long时,实际上是在获取字符串中每个字符的ASCII值。所以字符“1”在内存中实际上表示为一个整数49,“2”表示为“50”,依此类推。您需要做的是将字符串作为一个整体转换回整数表示形式。

LengthofOrdTwo使用value1而不是Value2LengthofOrdTwo使用value1而不是value2Excellent。如果您想更严格一点,可以执行新的LongCharacter.getNumericValue'1';杰出的如果您想更严格一点,可以执行新的LongCharacter.getNumericValue'1';