Ich habe String name = "admin";
dann ichString char = name.substring(0,1); //char="a"
Ich möchte das char
in seinen ASCII-Wert (97) konvertieren. Wie kann ich das in Java tun?
Ich habe String name = "admin";
dann ichString char = name.substring(0,1); //char="a"
Ich möchte das char
in seinen ASCII-Wert (97) konvertieren. Wie kann ich das in Java tun?
Antworten:
Sehr einfach. Wirf deine einfach char
als int
.
char character = 'a';
int ascii = (int) character;
In Ihrem Fall müssen Sie zuerst das bestimmte Zeichen aus der Zeichenfolge abrufen und dann umwandeln.
char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.
Cast ist zwar nicht explizit erforderlich, verbessert aber die Lesbarkeit.
int ascii = character; // Even this will do the trick.
int ascii = (int)name.charAt(0);
An Stelle von:
String char = name.substring(0,1); //char="a"
Sie sollten die charAt()
Methode verwenden.
char c = name.charAt(0); // c='a'
int ascii = (int)c;
Die verschiedenen Antworten, die zeigen sollen, wie dies zu tun ist, sind alle falsch, da Java-Zeichen keine ASCII-Zeichen sind. Java verwendet eine Multibyte-Codierung von Unicode-Zeichen. Der Unicode-Zeichensatz ist ein Super-Satz von ASCII. Es kann also Zeichen in einer Java-Zeichenfolge geben, die nicht zu ASCII gehören. Solche Zeichen haben keinen numerischen ASCII-Wert. Daher ist es nicht möglich zu fragen, wie der numerische ASCII-Wert eines Java-Zeichens ermittelt werden kann.
Aber warum willst du das überhaupt tun? Was machst du mit dem Wert?
Wenn Sie den numerischen Wert verwenden möchten, damit Sie den Java-String in einen ASCII-String konvertieren können, lautet die eigentliche Frage "Wie codiere ich einen Java-String als ASCII?". Verwenden Sie dazu das Objekt StandardCharsets.US_ASCII
.
Wenn Sie die gesamte Zeichenfolge in verkettete ASCII-Werte konvertieren möchten, können Sie Folgendes verwenden:
String str = "abc"; // or anything else
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
sb.append((int)c);
BigInteger mInt = new BigInteger(sb.toString());
System.out.println(mInt);
wobei Sie 979899 als Ausgabe erhalten.
Gutschrift dafür .
Ich habe es hier nur kopiert, damit es für andere bequem ist.
Konvertieren Sie das Zeichen in int.
String name = "admin";
int ascii = name.toCharArray()[0];
Ebenfalls :
int ascii = name.charAt(0);
Wirf den Char einfach auf einen Int.
char character = 'a';
int number = (int) character;
Der Wert von number
wird 97 sein.
public class Ascii {
public static void main(String [] args){
String a=args[0];
char [] z=a.toCharArray();
for(int i=0;i<z.length;i++){
System.out.println((int)z[i]);
}
}
}
Es ist ganz einfach, holen Sie sich den gewünschten Charakter und konvertieren Sie ihn in int.
String name = "admin";
int ascii = name.charAt(0);
Ich weiß, dass dies bereits in verschiedenen Formen beantwortet wurde, aber hier ist mein Code mit einem Blick auf alle Zeichen.
Hier ist der Code, der mit der Klasse begonnen hat
public class CheckChValue { // Class name
public static void main(String[] args) { // class main
String name = "admin"; // String to check it's value
int nameLenght = name.length(); // length of the string used for the loop
for(int i = 0; i < nameLenght ; i++){ // while counting characters if less than the length add one
char character = name.charAt(i); // start on the first character
int ascii = (int) character; //convert the first character
System.out.println(character+" = "+ ascii); // print the character and it's value in ascii
}
}
}}
string
und char
. Eine Texteinheit in Unicode ist ein Graphem, bei dem es sich um einen Basiscodepunkt handelt, gefolgt von null oder mehr kombinierten Codepunkten. Ein Codepunkt in Java ist in UTF-16 codiert, was eine oder zwei 16-Bit-Codeeinheiten ( char
) für einen Codepunkt erfordern könnte . Informationen zum Iterieren von Codepunkten finden Sie in dieser Antwort . Der Code sollte beispielsweise bereits für den aufstrebenden Codepoint U + 1F91E HAND WITH INDEX AND MIDDLE FINGERS CROSSED bereit sein.
String str = "abc"; // or anything else
// Stores strings of integer representations in sequence
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
sb.append((int)c);
// store ascii integer string array in large integer
BigInteger mInt = new BigInteger(sb.toString());
System.out.println(mInt);
String name = "admin";
char[] ch = name.toString().toCharArray(); //it will read and store each character of String and store into char[].
for(int i=0; i<ch.length; i++)
{
System.out.println(ch[i]+
"-->"+
(int)ch[i]); //this will print both character and its value
}
Wie @Raedwald hervorhob, berücksichtigt Javas Unicode nicht alle Zeichen, um den ASCII-Wert zu erhalten. Der richtige Weg (Java 1.7+) ist wie folgt:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
new String(byte[])
verwendet noch eine weitere Zeichenkodierung - den sogenannten Systemstandard, der sich je nach Zeit, Computer und Benutzer ändert. fast nie nützlich. Was Sie nennen, asciiString
ist immer noch UTF-16, weil das alles ist, was Java hat.
mit Java 9 => String.chars ()
String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));
Ausgabe - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
Wenn Sie den ASCII-Wert aller Zeichen in einem String möchten. Sie können dies verwenden:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
und wenn Sie ASCII eines einzelnen Zeichens in einem String möchten, können Sie Folgendes wählen:
(int)a.charAt(index);
Ich habe das Gleiche versucht, aber die beste und einfachste Lösung wäre, charAt zu verwenden und auf die Indizes zuzugreifen. Wir sollten ein ganzzahliges Array mit der Größe [128] erstellen.
String name = "admin";
int ascii = name.charAt(0);
int[] letters = new int[128]; //this will allocate space with 128byte size.
letters[ascii]++; //increments the value of 97 to 1;
System.out.println("Output:" + ascii); //Outputs 97
System.out.println("Output:" + letters[ascii]); //Outputs 1 if you debug you'll see 97th index value will be 1.
Wenn Sie ASCII-Werte der vollständigen Zeichenfolge anzeigen möchten, müssen Sie dies tun.
String name = "admin";
char[] val = name.toCharArray();
for(char b: val) {
int c = b;
System.out.println("Ascii value of " + b + " is: " + c);
}
Ihre Ausgabe ist in diesem Fall: Ascii-Wert von a ist: 97 Ascii-Wert von d ist: 100 Ascii-Wert von m ist: 109 Ascii-Wert von i ist: 105 Ascii-Wert von n ist: 110
Der einfache Weg, dies zu tun, ist:
Für den gesamten String in ASCII:
public class ConvertToAscii{
public static void main(String args[]){
String abc = "admin";
int []arr = new int[abc.length()];
System.out.println("THe asscii value of each character is: ");
for(int i=0;i<arr.length;i++){
arr[i] = abc.charAt(i); // assign the integer value of character i.e ascii
System.out.print(" "+arr[i]);
}
}
}
THe asscii value of each character is:
97 100 109 105 110
abc.charAt(i)
gibt das einzelne Zeichen von String - Array: Wenn wir jedes Zeichen Integer - Typ dann zuweisen, die Compiler tun Typumwandlung als,
arr[i] = (int) character // Here, every individual character is coverted in ascii value
Aber für einen einzelnen Charakter:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
Dafür könnten wir sofort String-Klassen verwenden
input.codePointAt(index);
Ich möchte noch einen Vorschlag machen, wie die gesamte Zeichenfolge in entsprechende ASCII-Codes konvertiert werden soll, wobei Java 8 verwendet wird, z. B. "abcde" bis "979899100101".
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
String char
jemals kompilieren. Vielleicht möchten Sie die Variable umbenennen inString ch