Java – Convert Character to ASCII

In Java, we can cast the char to int to get the ASCII value of the char.


  char aChar = 'a';
  //int ascii = (int) aChar;      // explicitly cast, optional, improves readability
  int ascii = aChar;              // implicit cast, auto cast char to int,
  System.out.println(ascii);      // 97

The explicit cast (int)char is optional, if we assign a char to an integer, Java will auto-cast the char to an int.

1. Convert Char to ASCII

This Java example converts a char to an ASCII value, and we can use Character.toChars to turn the ASCII value back to a character.

JavaAsciiExample1.java

package com.mkyong.basic;

public class JavaAsciiExample1 {

    public static void main(String[] args) {

        // convert char to ASCII
        char aChar = 'a';
        int ascii = aChar;              // auto cast char to int
        System.out.println(ascii);      // 97

        // convert ASCII to char
        char[] chars = Character.toChars(ascii);
        System.out.println(chars);      // a

        char aChar2 = (char) ascii;     // or downcast int to char, it works.
        System.out.println(aChar2);     // a
    }
}

Output

Terminal

97
a
a

In ASCII, decimal from 0 to 31, and 127 represents file-related stuff; the printable characters are from 32 to 126. To convert ASCII back to a char or string, we can do a simple range check validation to ensure it’s a valid ASCII value.


  public static char asciiToChar(final int ascii) {

      if (ascii < 0 || ascii >= 127) {
          throw new IllegalArgumentException("Invalid ASCII value!");
      }

      return (char) ascii;
  }

2. Convert String to ASCII

2.1 We can use String.getBytes(StandardCharsets.US_ASCII) to convert the string into a byte arrays byte[], and upcast the byte to int to get the ASCII value.

JavaAsciiExample2.java

package com.mkyong.basic;

import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

public class JavaAsciiExample2 {

    public static void main(String[] args) {

        String input = "abcdefg";
        byte[] bytes = input.getBytes(StandardCharsets.US_ASCII);

                                                    // print the first byte
        System.out.println(bytes[0]);               // 97

        List<Integer> result = new ArrayList<>();   // convert bytes to ascii
        for (byte aByte : bytes) {
            int ascii = (int) aByte;                // byte -> int
            result.add(ascii);
        }

        System.out.println(result.toString());      // [97, 98, 99, 100, 101, 102, 103]

    }

}

Output

Terminal

97
[97, 98, 99, 100, 101, 102, 103]

2.2 Java 9, there is a new API String.char() to convert string into a InputStream, follow by a .boxed(), and it will convert into a Stream<Integer>.


    String input = "abcdefg";
    List<Integer> collect = input
                                .chars()                        // IntStream
                                .boxed()                        // Stream<Integer>, ASCII values
                                .collect(Collectors.toList());  // Returns a List

    collect.forEach(System.out::println);

Output

Terminal

97
98
99
100
101
102
103

2.3 To convert ASCII values back to a string, we can use Character.toString, it accepts an integer (code point) as an argument and returns a string.

JavaAsciiExample3.java

package com.mkyong.basic;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class JavaAsciiExample3 {

    public static void main(String[] args) {

        List<Integer> ascii = Arrays.asList(97, 98, 99, 100, 101, 102, 103);

        // Java 8 stream
        String result = ascii.stream()
                .map(x -> Character.toString(x))    // int -> string
                .collect(Collectors.joining());     // return a string

        System.out.println(result);
    }

}

Output

Terminal

  abcdefg

References

author image

mkyong

Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities. Read all published posts by

Comments

avatar
3000
newest oldest most voted
Ashan Nawarathna
Guest
Ashan Nawarathna

/**
*Get jframe and put jtexFiled and add keyTyped Evetnt and put this code line
*

*/

private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {

char c = evt.getKeyChar();
int i = (int)c;
System.out.println(i);

}

Arian Fornaris
Guest
Arian Fornaris

Thanks!

Also If you want to convert strings you can do this:

String s = new String(asciiBytes, Charset.forName(“US-ASCII”));

Artur
Guest
Artur

thanks!!

Daniel
Guest
Daniel

Thanks you very much, a very usefull information !!!