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)
long one = Character.getNumericValue('1');
http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#getNumericValue%28char%29
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',依此类推。您需要做的是将整个字符串转换回整数表示形式。