Làm cách nào để chuyển đổi một mảng byte thành Base64 trong Java?


120

Được rồi, tôi biết cách làm điều đó trong C #.

Nó đơn giản như:

Convert.ToBase64String(byte[])
and Convert.FromBase64String(string) to get byte[] back.

Làm thế nào tôi có thể làm điều này trong Java?

Câu trả lời:


226

Java 8+

Mã hóa hoặc giải mã mảng byte:

byte[] encoded = Base64.getEncoder().encode("Hello".getBytes());
println(new String(encoded));   // Outputs "SGVsbG8="

byte[] decoded = Base64.getDecoder().decode(encoded);
println(new String(decoded))    // Outputs "Hello"

Hoặc nếu bạn chỉ muốn các chuỗi:

String encoded = Base64.getEncoder().encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(Base64.getDecoder().decode(encoded.getBytes()));
println(decoded)    // Outputs "Hello"

Để biết thêm thông tin, hãy xem Base64 .

Java <8

Base64 không đi kèm với các phiên bản Java nhỏ hơn 8. Tôi khuyên bạn nên sử dụng Apache Commons Codec .

Đối với mảng byte trực tiếp:

Base64 codec = new Base64();
byte[] encoded = codec.encode("Hello".getBytes());
println(new String(encoded));   // Outputs "SGVsbG8="

byte[] decoded = codec.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

Hoặc nếu bạn chỉ muốn các chuỗi:

Base64 codec = new Base64();
String encoded = codec.encodeBase64String("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(codec.decodeBase64(encoded));
println(decoded)    // Outputs "Hello"

Mùa xuân

Nếu bạn đang làm việc trong một dự án Spring, bạn có thể thấy org.springframework.util.Base64Utilslớp học của họ tiện lợi hơn:

Đối với mảng byte trực tiếp:

byte[] encoded = Base64Utils.encode("Hello".getBytes());
println(new String(encoded))    // Outputs "SGVsbG8="

byte[] decoded = Base64Utils.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

Hoặc nếu bạn chỉ muốn các chuỗi:

String encoded = Base64Utils.encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = Base64Utils.decodeFromString(encoded);
println(new String(decoded))    // Outputs "Hello"

Android (với Java <8)

Nếu bạn đang sử dụng Android SDK trước Java 8 thì tùy chọn tốt nhất của bạn là sử dụng gói android.util.Base64.

Đối với mảng byte trực tiếp:

byte[] encoded = Base64.encode("Hello".getBytes());
println(new String(encoded))    // Outputs "SGVsbG8="

byte [] decoded = Base64.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

Hoặc nếu bạn chỉ muốn các chuỗi:

String encoded = Base64.encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(Base64.decode(encoded));
println(decoded)    // Outputs "Hello"

29

Sử dụng:

byte[] data = Base64.encode(base64str);

Mã hóa chuyển đổi thành Base64

Bạn sẽ cần tham chiếu codec commons từ dự án của mình để mã đó hoạt động.

Đối với java8 :

import java.util.Base64

21
Các phương thức để mã hóa / giải mã của lớp Base64 là tĩnh nên bạn không cần tạo một đối tượng mới. Sau đó: byte [] data = Base64.decode (base64str); Là đủ.
Ernesto Campohermoso

15

Ngoài ra, đối với những người bạn Android của chúng tôi (API Cấp 8):

import android.util.Base64

...

Base64.encodeToString(bytes, Base64.DEFAULT);

7

Trong trường hợp bạn đang sử dụng Spring framework cùng với java, có một cách dễ dàng.

  1. Nhập nội dung sau.

    nhập org.springframework.util.Base64Utils;
  2. Chuyển đổi như thế này.

    byte [] bytearr = {0,1,2,3,4};
    String encodedText = Base64Utils.encodeToString (bytearr);
    

    Để giải mã, bạn có thể sử dụng phương thức decodeToString của lớp Base64Utils.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.