Рубрики
Без рубрики

Как преобразовать массив байтов[] в строку в Java

Для текстовых данных “байт[]` мы используем “новую строку (байты, стандартные наборы символов. UTF_8) `; Для двоичных данных “байт[]` мы используем двоичную кодировку Base64.

В Java мы можем использовать новую строку (байты, стандартные наборы символов. UTF_8) для преобразования байта[] в строку.

import java.nio.charset.StandardCharsets;

  // string to byte[]
  byte[] bytes = "hello".getBytes();

  // byte[] to string
  String s = new String(bytes, StandardCharsets.UTF_8);

Для текстовых или символьных данных мы используем новую строку (байты, стандартные наборы символов. UTF_8) для преобразования байта[] в Строка . Однако в случаях, когда байт[] содержит двоичные данные, такие как изображение или другие нетекстовые данные, рекомендуется преобразовать байт[] в кодированную строку Base64 .

  // file to byte[]
  byte[] bytes = Files.readAllBytes(Paths.get("/path/image.png"));

  // Java 8 - Base64 class, finally.
  // byte[] to base64 encoded string
  String s = Base64.getEncoder().encodeToString(bytes);
  System.out.println(s);

  // base64 encoded string to byte[]
  byte[] decode = Base64.getDecoder().decode(s);

Резюме.

  1. Для текстовых данных байт[] мы используем новую строку (байты, стандартные наборы символов. UTF_8) , UTF-8 для кодировки символов.
  2. Для двоичных данных байт[] мы используем двоичную кодировку Base64.

1. Преобразовать байт[] в строку (текстовые данные)

Приведенный ниже пример преобразует строку в массив байтов и наоборот.

package com.mkyong.io.howto;

import java.nio.charset.StandardCharsets;

public class ByteToString {

    public static void main(String[] args) {

        String example = "This is raw text!";
        // string to byte[]
        byte[] bytes = example.getBytes();

        System.out.println("Text : " + example);
        System.out.println("Text [Byte Format] : " + bytes);

        // no, don't do this, it returns the address of the object in memory
        System.out.println("Text [Byte Format] toString() : " + bytes.toString());

        // convert byte[] to string
        String s = new String(bytes, StandardCharsets.UTF_8);
        System.out.println("Output : " + s);

        // UnsupportedEncodingException
        // String s1 = new String(bytes, "UTF_8");

    }
}

Выход

Text : This is raw text!
Text [Byte Format] : [B@58372a00
Text [Byte Format] toString() : [B@58372a00
Output : This is raw text!

2. Преобразовать байт[] в строку (двоичные данные)

Приведенный ниже пример преобразования изображения phone.png в байт[] и использует класс Java 8 Base64 для преобразования байта[] в строку в кодировке Base64. Позже мы преобразуем строку в кодировке Base64 обратно в исходный байт[] и сохраним ее в другое изображение с именем phone2.png .

package com.mkyong.io.howto;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;

public class ByteToString2 {

    public static void main(String[] args) {

        String filepath = "/home/mkyong/phone.png";
        try {
            byte[] bytes = Files.readAllBytes(Paths.get(filepath));

            // readable string that encoded in base64, easy transfer as a string

            // byte[] to base64 string
            String s = Base64.getEncoder().encodeToString(bytes);
            System.out.println(s);

            // base64 string to byte[]
            byte[] decode = Base64.getDecoder().decode(s);
            Files.write(Paths.get("/home/mkyong/phone2.png"), decode);

        } catch (IOException e) {
            e.printStackTrace();
        }


    }

}

Выход

bh5aLyZALN4othXL2mByHo1aZA5ts5k/uw/sc7DBngGY......

Скачать Исходный Код

$клон git $клон git

$cd java-ввод-вывод

Рекомендации

Оригинал: “https://mkyong.com/java/how-do-convert-byte-array-to-string-in-java/”