Подтвердить что ты не робот

Как преобразовать массив байтов в Base64 в Java?

Хорошо, я знаю, как это сделать на С#.

Это просто:

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

Как это сделать в Java?

4b9b3361

Ответ 1

Java 8

Кодировать или декодировать массивы байтов:

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"

Или, если вам просто нужны строки:

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

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

Для получения дополнительной информации см. Base64.

Java 7

Base64 не связан с Java 7. Я рекомендую использовать Apache Commons Codec.

Для массивов прямого байта:

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"

Или, если вам просто нужны строки:

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"

Android/Java 7

Если вы используете Android SDK с Java 7, то лучшим вариантом является использование связанного android.util.Base64.

Для массивов прямого байта:

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

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

Или, если вам просто нужны строки:

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

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

Ответ 2

Использование

byte[] data = new Base64().decode(base64str);

вам нужно будет ссылаться на commons codec из вашего проекта, чтобы этот код работал.