Search code examples
javastringasciiarrays

How to convert a Java String to an ASCII byte array?


How to convert a Java String to an ASCII byte array?


Solution

  • Using the getBytes method, giving it the appropriate Charset (or Charset name).

    Example:

    String s = "Hello, there.";
    byte[] b = s.getBytes(StandardCharsets.US_ASCII);
    

    If more control is required (such as throwing an exception when a character outside the 7 bit US-ASCII is encountered) then CharsetDecoder can be used:

    private static byte[] strictStringToBytes(String s, Charset charset) throws CharacterCodingException {
        ByteBuffer x  = charset.newEncoder().onMalformedInput(CodingErrorAction.REPORT).encode(CharBuffer.wrap(s));
        byte[] b = new byte[x.remaining()];
        x.get(b);
        return b;
     }
    

    Before Java 7 it is possible to use: byte[] b = s.getBytes("US-ASCII");. The enum StandardCharsets, the encoder as well as the specialized getBytes(Charset) methods have been introduced in Java 7.