gpt4 book ai didi

java - 从 char 转换为 long

转载 作者:行者123 更新时间:2023-11-29 09:52:59 30 4
gpt4 key购买 nike

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

我通过将 long 转换为字符串然后转换为 char 数组并将它们临时存储在某个地方来完成此操作。这工作正常,当打印出来时打印出来的数字与读入的数字完全一样。现在我想做的是将它们添加到一个新数组并将它们的数据类型设置为 long。我制作了两个数组来处理这个问题。

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

执行此操作的最佳方法是什么?

编辑:似乎如果我将长数组更改为 int 数组,然后使用 Character.getNumericValue(char ch) 它可以正确地将其添加到数组中。

因为我计划在这个函数的末尾返回一个 long,我是否应该确保这些数组是 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]);
}

最佳答案

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

00000000 00000000 00000000 00000000 00000000 00000000 00110000 00111001

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

00110001 00110010 00110011 00110100 00110101

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

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

关于java - 从 char 转换为 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29997665/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com