JW wird String charjemals kompilieren. Vielleicht möchten Sie die Variable umbenennen inString ch
Vikas Prasad
ASCII? Bist du sicher, dass du das willst? Java verwendet die UTF-16-Zeichenkodierung des Unicode-Zeichensatzes (genau wie JavaScript, .NET, VBA, VB4 / 5/6, NCHAR, NVARCHAR, NTFS, Windows-API usw.). Die Antworten lassen sich in mehrere Kategorien einteilen: explizite Beantwortung von ASCII, Beantwortung von UTF-16 und Beantwortung von ASCII über mehrere Verknüpfungen von UTF-16 (und auch einige sind einfach falsch).
Tom Blodget
Antworten:
295
Sehr einfach. Wirf deine einfach charals 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.
Nur um sich daran zu erinnern, dass "char" in Java ein reserviertes Wort ist.
Kalt
12
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.
Perfekte Antwort. Typguss ist nur eine Abkürzung, die nicht genau ist. Ich bin froh, dass Ihre Antwort am Anfang kam, damit die Leute das Konzept nicht falsch verstehen.
Karthik R
Der Grund, warum ich die ASCII-Zeichenfolge kennen muss, ist, dass Unicode-Daten in einen Backend-Prozess eingehen, der reines ASCII an einer anderen Stelle platzieren muss, und dies muss ich tun, wenn ich Nicht-Unicode erhalte. Normalerweise, wenn Benutzer das Einfügen aus MS Word kopieren (z. B. gekrümmte doppelte und einfache Anführungszeichen, lange Striche usw.). StandardCharsets.US_ASCII zu erwähnen ist das Richtige, aber das sagt dem ursprünglichen Fragesteller nicht, wie er es verwenden soll.
Tihamer
öffentlicher statischer String displayAsciiCode (String s, boolean useStandard) {String r = ""; Byte [] ascii = null; if (useStandard) {ascii = s.getBytes (StandardCharsets.US_ASCII); für (int i = 0; i <ascii.length; i ++) {Byte b = ascii [i]; r = r + + s.charAt (i) + = + (int) b; }} else {ascii = s.getBytes (); für (int i = 0; i <ascii.length; i ++) {Byte b = ascii [i]; r = r + "" + Character.toString ((char) ascii [i]) + "=" + (int) b; }} return r; }
Tihamer
Rufen Sie das Obige auf mit: String string = "Dies" ist "seltsam"; System.out.println ("strings =" + string); System.out.println (displayAsciiCode (string, true)); System.out.println (displayAsciiCode (string, false)); Das Ergebnis ist: Strings = Dies ist seltsam T = 84 h = 104 i = 105 s = 115 = 32 "= 63 i = 105 s = 115" = 63 = 32 s = 115 t = 116 r = 114 a = 97 n = 110 g = 103 e = 101 T = 84 h = 104 i = 105 s = 115 = 32 ¬ = -30 タ = -128 ワ = -100 i = 105 s = 115 ¬ = -30 タ = -128ン = -99 = 32 s = 115 t = 116 r = 114 a = 97 n = 110 g = 103 e = 101
Tihamer
10
Wenn Sie die gesamte Zeichenfolge in verkettete ASCII-Werte konvertieren möchten, können Sie Folgendes verwenden:
String str ="abc";// or anything elseStringBuilder sb =newStringBuilder();for(char c : str.toCharArray())
sb.append((int)c);BigInteger mInt =newBigInteger(sb.toString());System.out.println(mInt);
Während dieses Code-Snippet die Frage lösen kann, hilft eine Erklärung wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in Zukunft beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen.
DimaSan
1
Es ist ganz einfach, holen Sie sich den gewünschten Charakter und konvertieren Sie ihn in int.
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
publicclassCheckChValue{// Class namepublicstaticvoid main(String[] args){// class mainString name ="admin";// String to check it's valueint nameLenght = name.length();// length of the string used for the loopfor(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 characterint ascii =(int) character;//convert the first characterSystem.out.println(character+" = "+ ascii);// print the character and it's value in ascii}}
Java verwendet Unicode für stringund 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.
Tom Blodget
1
String str ="abc";// or anything else// Stores strings of integer representations in sequenceStringBuilder sb =newStringBuilder();for(char c : str.toCharArray())
sb.append((int)c);// store ascii integer string array in large integerBigInteger mInt =newBigInteger(sb.toString());System.out.println(mInt);
Während dieser Code die Frage beantworten kann, ist es besser zu erklären, was er tut, und einige Verweise darauf hinzuzufügen.
Hamid Pourjam
1
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}
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, asciiStringist immer noch UTF-16, weil das alles ist, was Java hat.
Tom Blodget
@ TomBlodget, ich stimme zu. Aber ich denke, OP wollte wissen, wie man die ASCII-Darstellung eines bestimmten Charakters erhält. Dies ist nur eine Codierung, da Java kein rohes ASCII ausführen kann
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 =newint[128];//this will allocate space with 128byte size.
letters[ascii]++;//increments the value of 97 to 1;System.out.println("Output:"+ ascii);//Outputs 97System.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
publicclassConvertToAscii{publicstaticvoid main(String args[]){String abc ="admin";int[]arr =newint[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 asciiSystem.out.print(" "+arr[i]);}}}
Die Ausgabe ist:
THe asscii value of each character is:
97 100 109 105 110
Hier 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);
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 char
jemals kompilieren. Vielleicht möchten Sie die Variable umbenennen inString ch
Antworten:
Sehr einfach. Wirf deine einfach
char
alsint
.In Ihrem Fall müssen Sie zuerst das bestimmte Zeichen aus der Zeichenfolge abrufen und dann umwandeln.
Cast ist zwar nicht explizit erforderlich, verbessert aber die Lesbarkeit.
quelle
int ascii = (int)name.charAt(0);
nur ein anderer Ansatz
bytes[0]
wird ascii von a .. und damit die anderen Zeichen im gesamten Array darstellen.quelle
An Stelle von:
Sie sollten die
charAt()
Methode verwenden.quelle
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
.quelle
Wenn Sie die gesamte Zeichenfolge in verkettete ASCII-Werte konvertieren möchten, können Sie Folgendes verwenden:
wobei Sie 979899 als Ausgabe erhalten.
Gutschrift dafür .
Ich habe es hier nur kopiert, damit es für andere bequem ist.
quelle
Konvertieren Sie das Zeichen in int.
Ebenfalls :
quelle
Wirf den Char einfach auf einen Int.
Der Wert von
number
wird 97 sein.quelle
quelle
Es ist ganz einfach, holen Sie sich den gewünschten Charakter und konvertieren Sie ihn in int.
quelle
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
}}
quelle
string
undchar
. 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.quelle
quelle
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:
quelle
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.Ein einfacher Weg dafür ist:
Wenn Sie "Zeichen" drucken, erhalten Sie 97.
quelle
Oder Sie können die Stream-API für 1 Zeichen oder einen String ab Java 1.8 verwenden:
quelle
mit Java 9 => String.chars ()
Ausgabe - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
quelle
Mit diesem Code können Sie die ASCII-Nummer überprüfen.
Wenn ich falsch liege, entschuldige ich mich.
quelle
Wenn Sie den ASCII-Wert aller Zeichen in einem String möchten. Sie können dies verwenden:
und wenn Sie ASCII eines einzelnen Zeichens in einem String möchten, können Sie Folgendes wählen:
quelle
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.
Wenn Sie ASCII-Werte der vollständigen Zeichenfolge anzeigen möchten, müssen Sie dies tun.
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
quelle
Der einfache Weg, dies zu tun, ist:
Für den gesamten String in ASCII:
Die Ausgabe ist:
THe asscii value of each character is: 97 100 109 105 110
Hier
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);
quelle
Dafür könnten wir sofort String-Klassen verwenden
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".
quelle