Em Java, eu tenho uma String e quero codificá-la como uma matriz de bytes (em UTF8, ou alguma outra codificação). Alternativamente, eu tenho uma matriz de bytes (em alguma codificação conhecida) e eu quero convertê-la em uma String Java. Como eu faço essas conversões?
Converta de String para byte[]:
String s = "some text here";
byte[] b = s.getBytes(StandardCharsets.UTF_8);
Converta de byte[] para String:
byte[] b = {(byte) 99, (byte)97, (byte)116};
String s = new String(b, StandardCharsets.US_ASCII);
Você deve, é claro, usar o nome de codificação correto. Os meus exemplos usaram US-ASCII e UTF-8, as duas codificações mais comuns.
String original = "hello world";
byte[] utf8Bytes = original.getBytes("UTF-8");
Você pode converter diretamente através do método String(byte[], String) construtor e getBytes(String). Java expõe os conjuntos de caracteres disponíveis através da classe Charset. A documentação JDK lista codificações suportadas.
90% do tempo, tais conversões são realizadas em fluxos, então você'usaria as classes Reader/Writer. Você não decodificaria incrementalmente usando os métodos String em streams de bytes arbitrários - você se deixaria aberto a bugs envolvendo caracteres multibyte.