String para matriz de bytes, matriz de bytes para String em Java

Hoje aprenderemos como converter String para um array de bytes em Java. Também aprenderemos como converter um array de bytes para String em Java.

String para array de bytes

Podemos usar o método getBytes() da classe String para codificar a string em uma sequência de bytes usando o conjunto de caracteres padrão da plataforma. Este método é sobrecarregado e também podemos passar Charset como argumento. Aqui está um programa simples que mostra como converter String para array de bytes em Java.

package com.journaldev.util;

import java.util.Arrays;

public class StringToByteArray {

	public static void main(String[] args) {
		String str = "PANKAJ";
		byte[] byteArr = str.getBytes();
		// imprimir os elementos byte[]
		System.out.println("String to byte array: " + Arrays.toString(byteArr));
	}
}

A imagem abaixo mostra a saída quando executamos o programa acima. Também podemos obter o array de bytes usando o código abaixo.

byte[] byteArr = str.getBytes("UTF-8");

No entanto, se fornecermos o nome do conjunto de caracteres, então teremos que capturar UnsupportedEncodingException exceção ou lançá-la. Uma abordagem melhor é usar a classe StandardCharsets introduzida no Java 1.7, conforme mostrado abaixo.

byte[] byteArr = str.getBytes(StandardCharsets.UTF_8);

Isso é tudo sobre as diferentes maneiras de converter String para array de bytes em Java.

Array de bytes para String em Java

Vamos olhar para um programa simples mostrando como converter array de bytes para String em Java.

package com.journaldev.util;

public class ByteArrayToString {

	public static void main(String[] args) {
		byte[] byteArray = { 'P', 'A', 'N', 'K', 'A', 'J' };
		byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };

		String str = new String(byteArray);
		String str1 = new String(byteArray1);

		System.out.println(str);
		System.out.println(str1);
	}
}

A imagem abaixo mostra a saída produzida pelo programa acima. Você notou que estou fornecendo char ao criar o array de bytes? Funciona por causa do autoboxing e o char ‘P’ é convertido para 80 no array de bytes. É por isso que a saída é a mesma para ambas as conversões de array de bytes para string. A classe String também tem um construtor onde podemos fornecer array de bytes e Charset como argumento. Então, o código abaixo também pode ser usado para converter array de bytes para String em Java.

String str = new String(byteArray, StandardCharsets.UTF_8);

A classe String também tem um método para converter um subconjunto do array de bytes para String.

byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };
String str = new String(byteArray1, 0, 3, StandardCharsets.UTF_8);

O código acima está perfeitamente correto e o valor de ‘str’ será ‘PAN’. Isso é tudo sobre converter array de bytes para String em Java.

Você pode conferir mais exemplos de arrays em nosso Repositório no GitHub.

Referência: Documentação da API getBytes

Source:
https://www.digitalocean.com/community/tutorials/string-byte-array-java