Umwandlung von char zu lange
Ich bin momentan dabei, eine big integer Klasse. Ich lese in zwei longs als Funktions-Argumente und-was ich tun will ist jede Zahl in der langen Lesen in zu besetzen, um einen index eines Arrays.
Ich habe dies durch die Umwandlung der langen, in einen string, dann char-array und speichern Sie Sie irgendwo vorübergehend. Dies funktioniert gut und beim Ausdruck druckt genau wie die Zahl gelesen. Nun, was ich will zu tun ist, fügen Sie Sie jetzt zu einem neuen array, und Sie haben Ihre Daten geben Sie als long
. Ich habe zwei arrays, um sich mit diesem.
Problem ist, wenn ich versuche Besetzung der char zu lange, gibt es mir einen ganz anderen Wert. Es scheint, dass es die Umwandlung der char in seine eigene jeweilige Anzahl? Charakter Klasse, die nicht scheinen, um eine Möglichkeit der Umwandlung zu lange.
Was ist der beste Weg, dies zu tun?
EDIT: Es scheint, dass, wenn ich die langen arrays int-arrays und verwenden Sie dann den Charakter.getNumericValue(char ch) es funktioniert, indem es das array richtig.
Da ich Plane wieder eine lange, am Ende dieser Funktion sollte ich sicherstellen, dass diese arrays sind lang für die Sicherheit? Oder speichern Sie Sie als int-Werte in das array in Ordnung ist? Dank
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]);
}
- lengthOfWordTwo verwendet statt Wert1 von Wert2
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einzige wirkliche Unterschied zwischen einem
char
und einlong
ist die Größe der Daten. Einchar
ist in der Regel 1 byte, während einlong
ist in der Regel 8 bytes. Beim konvertieren einerlong
zu einemstring
erstellen Sie ein array von ASCII-Zeichen darstellen würde diese Zahl. Zum Beispiel, dielong
12345 vertreten sein werden im Speicher wie:Aber bei der Konvertierung in ein
string
(ein array von 1-byte -char
s), es wäre mehr wie folgt Aussehen:Wo jedes byte ist ein Zeichen in der Zeichenfolge. Das erste byte als ein ASCII '1', '2', etc.
Beim wirken jedes
char
zurück zu einemlong
, Sie sind eigentlich immer der ASCII-Wert der jedes Zeichen in der Zeichenfolge. Also diechar
'1' ist tatsächlich vertreten werden im Speicher als eine ganze Zahl 49, '2' ist', 50', und so weiter. Was Sie tun müssen, konvertieren Sie die Zeichenfolge als ganze zurück auf die integer-Darstellung.long one = Character.getNumericValue('1');
http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#getNumericValue%28char%29