从char转换为long

mag*_*_nz 1 java arrays biginteger long-integer

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

通过将long转换为字符串,然后将其转换为char数组并将它们临时存储在某个地方,可以做到这一点。这可以正常工作,并且在打印出来时可以像读入的数字一样打印出来。现在,我要做的就是将它们现在添加到新数组中,并将其数据类型设置为long。我已经做了两个数组来处理这个问题。

问题是当我尝试将char转换为long时,它给了我完全不同的价值。似乎是将char转换为自己的数字?字符类似乎没有任何转换为​​long的方法。

最好的方法是什么?

编辑:看来,如果我将长数组更改为int数组,然后使用Character.getNumericValue(char ch),则可以正常将其添加到数组中。

由于我计划在此函数的结尾处返回一个long值,因此我应该确保这些数组对安全性很久吗?还是将它们存储为int数组?谢谢

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]);
    }
Run Code Online (Sandbox Code Playgroud)

Jar*_*red 6

achar和 a之间唯一真正的区别long是数据大小。Achar通常为 1 个字节,而 along通常为 8 个字节。当您将 a 转换long为 a 时string,您正在创建一个代表此数字的 ASCII 字符数组。例如,long12345 在内存中将表示为:

00000000 00000000 00000000 00000000 00000000 00000000 00110000 00111001
Run Code Online (Sandbox Code Playgroud)

但是当转换为 a string(一个 1 字节char的数组)时,它看起来更像这样:

00110001 00110010 00110011 00110100 00110101
Run Code Online (Sandbox Code Playgroud)

其中每个字节都是字符串中的一个字符。第一个字节是 ASCII '1'、'2' 等。

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