String para array de bytes, array de bytes para String em Java

Hoje aprenderemos como converter uma String para uma matriz de bytes em Java. Também aprenderemos como converter uma matriz de bytes para uma String em Java.

String para matriz 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 mostrando como converter uma String para uma matriz 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();
		// imprime 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 a matriz 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 a 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 são todas as diferentes maneiras de converter uma String para uma matriz de bytes em Java.

Java byte array para String

Vamos dar uma olhada em um programa simples que mostra como converter um 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? Isso funciona por causa do autoboxing e o char ‘P’ está sendo 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 um array de bytes e Charset como argumento. Portanto, o código abaixo também pode ser usado para converter um array de bytes para String em Java.

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

A classe String também possui 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 a conversão de array de bytes para String em Java.

Você pode conferir mais exemplos de array em nosso Repositório do GitHub.

Referência: Documentação da API getBytes

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