web-dev-qa-db-de.com

Zeichen in konvertieren ASCII Zahlenwert in Java

Ich habe String name = "admin";
dann mache ich String char = name.substring(0,1); //char="a" 

Ich möchte die char in ihren ASCII -Wert (97) konvertieren. Wie kann ich das in Java tun?

136
Celta

Sehr einfach. Geben Sie einfach Ihre char als int ein.

char character = 'a';    
int ascii = (int) character;

In Ihrem Fall müssen Sie zuerst das bestimmte Zeichen aus der Zeichenfolge holen und es dann umwandeln. 

char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.

Obwohl Guss nicht explizit erforderlich ist, verbessert dies die Lesbarkeit.

int ascii = character; // Even this will do the trick.
227
SudoRahul

nur ein anderer Ansatz

    String s = "admin";
    byte[] bytes = s.getBytes("US-ASCII");

bytes[0] repräsentiert das ASCII eines .. und damit die anderen Zeichen im gesamten Array.

43
stinepike

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;
18
christopher

Wenn Sie den gesamten String 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 an das .

Ich habe es nur hier kopiert, damit es für andere bequem ist.

10
user1721904

Die verschiedenen Antworten, die zeigen sollen, wie dies ausgeführt wird, sind alle falsch, da Java-Zeichen keine ASCII -Zeichen sind. Java verwendet eine Multibyte-Kodierung von Unicode-Zeichen. Der Unicode-Zeichensatz ist ein Super-Satz von ASCII. Es können also Zeichen in einem Java-String vorhanden sein, die nicht zu ASCII gehören. Solche Zeichen haben keinen numerischen Wert ASCII. Daher ist die Frage, wie der numerische Wert ASCII eines Java-Zeichens abgerufen werden kann, nicht zu beantworten.

Aber warum willst du das trotzdem? Was machen Sie mit dem Wert?

Wenn Sie den numerischen Wert so haben möchten, dass Sie den Java-String in einen ASCII - String konvertieren können, lautet die Frage " real ", "wie codiere ich einen Java-String als ASCII". Verwenden Sie dazu das Objekt StandardCharsets.US_ASCII.

9
Raedwald

Konvertieren Sie das Zeichen in int.

    String name = "admin";
    int ascii = name.toCharArray()[0];

Ebenfalls :

int ascii = name.charAt(0);
4
Vineet Singla

Werfen Sie einfach das Zeichen zu einem int.

char character = 'a';
int number = (int) character;

Der Wert von number beträgt 97.

2
Daniel Lerps
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);
1
Sandeepp Sah

Oder Sie können die Stream-API für 1 Zeichen oder einen String ab Java 1.8 verwenden:

public class ASCIIConversion {
    public static void main(String[] args) {
        String text = "adskjfhqewrilfgherqifvehwqfjklsdbnf";
        text.chars()
                .forEach(System.out::println);
    }
}
1
matua
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]);
        }
    }
}
1
yeswanth g

Ein einfacher Weg dafür ist:

    int character = 'a';

Wenn Sie "Zeichen" drucken, erhalten Sie 97.

1
ktlawal

Es ist einfach, hol dir den gewünschten Charakter und konvertiere ihn in int.

String name = "admin";
int ascii = name.charAt(0);
1

Wie @Raedwald hervorgehoben hat, berücksichtigt Java Unicode nicht alle Zeichen, um den Wert ASCII zu erhalten. Der richtige Weg (Java 1.7+) lautet wie folgt:

byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
1
Karthik R

Ich weiß, dass dies bereits in mehreren Formen beantwortet wurde, aber hier ist mein Code, der alle Zeichen durchläuft.

Hier ist der Code, der mit der Klasse beginnt

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
    }
}

}

1
gcclinux
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
}
1
iAsghar Hussain

Ich habe dasselbe versucht, aber die beste und einfachste Lösung wäre, charAt zu verwenden. Um auf die Indizes zuzugreifen, sollten wir ein ganzzahliges Array von [128] Größe 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 die 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);
}

In diesem Fall lautet Ihre Ausgabe: Ascii-Wert von a ist: 97 Ascii-Wert von d ist: 100 Ascii-Wert von m ist: 109 Ascii-Wert von i ist: 105 Der Wert von n ist: 110

0

Wenn Sie den ASCII -Wert aller Zeichen in einer Zeichenfolge möchten. Sie können dies verwenden: 

String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
    count+=i;

und wenn Sie möchten, dass ASCII ein einzelnes Zeichen in einem String ist, können Sie Folgendes tun: 

(int)a.charAt(index);
0
Vikram Singh

Sie können die ASCII-Nummer mit diesem Code überprüfen.

String name = "admin";
char a1 = a.charAt(0);
int a2 = a1;
System.out.println("The number is : "+a2); // the value is 97

Wenn ich falsch liege, entschuldige mich. 

0
Sin Nombre

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]

0
Anurag_BEHS

Dafür können wir gleich String Klassen verwenden

    input.codePointAt(index);

Ich möchte noch einen Vorschlag machen, wie man eine ganze Zeichenkette mit Java 8 in entsprechende ASCII-Codes konvertiert, zum Beispiel "abcde" zu "979899100101".

    String input = "abcde";
    System.out.println(
            input.codePoints()
                    .mapToObj((t) -> "" + t)
                    .collect(joining()));
0
piyush tyagi

Der einfache Weg, dies zu tun, ist: 

Für ganzen 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]);
      }
    }
}


Die Ausgabe ist:  

THe asscii value of each character is: 97 100 109 105 110


Hier gibt abc.charAt(i) das einzelne Zeichen des String-Arrays an: Wenn wir jedes Zeichen dem Integer-Typ zuweisen, schreibt der Compiler eine Typumwandlung als

arr[i] = (int) character // Here, every individual character is coverted in ascii value

Aber für Einzelzeichen:

String name = admin; asciiValue = (int) name.charAt(0);// for character 'a' System.out.println(asciiValue);

0
susan097