Como convertir array byte a String

convertir array byte a string

convertir array byte a string en java


En este artículo vamos a ver como convertir array byte a String. En muchas ocasiones la información que se nos envía o que procesamos la recivimos como un array de bytes, y tenemos que convertirla a String. A continuación vamos a ver las mejores y diferentes maneras de llevar a cabo el proceso de convertir un array de bytes a String.

Java nos proporciona por defecto la siguiente manera:

String s = new String(bytes, StandardCharsets.UTF_8), 

que nos será muy útil en la mayoría de los casos, pero en función de nuestras necesidades quizás necesitemos alguna de las siguientes formas.

En nuestros ejemplos hacemos uso de lombok para mostrar la información.

Convertir Byte en texto

A continuación vamos a ver como podemos convertir una cadena se Bytes en un String y al revés para imprimir o mostrar texto.

Hay que tener en cuenta que hacer arrayByte.toString() no transforma a String. Con esto únicamente vamos a conseguir la dirección en memoria.

package com.refactorizando.convert.byte.string;

import java.nio.charset.StandardCharsets;
import lombok.extern.slf4j.Slf4j;


@Slf4j
public class ConvertFromByteToString {

  public static void main(String[] args) {

      String text = "This is my text";

      byte[] bytes = text.getBytes(StandardCharsets.UTF_8);

      log.info("My text is : " + text);
      log.info("My text is (in bytes) : " + bytes);

      // lets go to return the memory address
      log.info("My text address memory in text is  : " + bytes.toString());

      // convert from bytes to String
      String str = new String(bytes, StandardCharsets.UTF_8);
      log.info("Output : " + str);


  }

}

Salida:

[INFO ] 2022-01-23 17:03:20.178 Application - My text is : This is my text
[INFO ] 2022-01-23 17:03:20.179 Application - My text is (in bytes) : [B@2d3fa3e0
[INFO ] 2022-01-23 17:03:20.179 Application - My text address memory in text is  : [B@2d3fa3e0
[INFO ] 2022-01-23 17:03:20.179 Application - Output : This is my text

Como vemos en el ejemplo anterior cuando hacemos bytes.toString(), únicamente obtenemos la posición de la memoria.

Convertir Byte a String y String a array de bytes en binario

En el siguiente ejemplo vamos a ver como cargando y transformando una foto en un array de bytes (byte[]), vamos a convertirla en un Array de bytes en Base64, para devolver una imagen. Para conseguir este proceso primero la convertiremos a String, y desde nuestro String lo convertiremos a un array de bytes en Base64.

package com.refactorizando.convert.byte.string;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class ConvertBytesToStringBase64 {

    public static void main(String[] args) {

        String photo= "/refactorizando/fromByteToString.png";
        Path path = Paths.get(photo);

        if (Files.notExists(path)) {
            throw new IllegalArgumentException("Do you know where is the photo?");
        }

        try {

            byte[] bytes = Files.readAllBytes(path);

            String s = Base64.getEncoder().encodeToString(bytes);

            log.info("The photo in string is {}", s);

            byte[] decode = Base64.getDecoder().decode(s);
            //Convert it from string to array byte decode in base64

            // save in base64
            Files.write(Paths.get("/refactorizando/Base64FromByteToString.png"), decode);

        } catch (IOException e) {
            log.error("Error processing the image {}", e.getMessage());
        }

    }

}

Salida:

  bh5aLyZALN4othXL2mByHo1aZA5ts5k/uw/sc7DBngGY......

Convertir byte a texto y en binario

Como hemos visto anteriormente Java nos proporciona el comando new String(bytes, StandardCharsets.UTF_8), para convertir de bytes a String, pero para aquellos casos en los que tenemos datos binarios (procesar una foto), la mejor manera es convertir nuestro String a Base64, vamos a verlo:

package com.refactorizando.convert.byte.string;

import java.nio.charset.StandardCharsets;
import lombok.extern.slf4j.Slf4j;


@Slf4j
public class ConvertToArrayBytesinBase64 {

  public static void main(String[] args) {  

        String photo= "/refactorizando/toBase64.png";
        Path path = Paths.get(photo);

        if (Files.notExists(path)) {
            throw new IllegalArgumentException("Do you know where is the photo?");
        }

        try {
             byte[] bytes = Files.readAllBytes(path);
  
            String s = Base64.getEncoder().encodeToString(bytes);

            log.info("The photo in string in Base64 is {}", s);;

            byte[] decode = Base64.getDecoder().decode(s);

  }
}

Conclusión

En este artículo hemos visto como convertir array byte en String, teniendo en cuenta los diferentes casos que se nos pueden dar, como por ejemplo si tenemos objetos que tienen que ser transformados en Base64.

Si necesitas más información puedes escribirnos un comentario o un correo electrónico a refactorizando.web@gmail.com o también nos puedes contactar por nuestras redes sociales Facebook o twitter y te ayudaremos encantados!


Deja una respuesta

Tu dirección de correo electrónico no será publicada.