如何在Java中将int数组转换为base64字符串?

Joh*_*hnB 0 java base64 unsigned

我该如何转换这个数组:

int[] ints = { 233, 154, 24, 196, 40, 203, 56, 213, 242, 96, 133, 54, 120, 146, 46, 3 };
Run Code Online (Sandbox Code Playgroud)

到这个字符串?

String base64Encoded = "6ZoYxCjLONXyYIU2eJIuAw==";
Run Code Online (Sandbox Code Playgroud)

用法:

String base64Encoded  = ConvertToBase64(int[] ints);
Run Code Online (Sandbox Code Playgroud)

(我问这个问题,因为byte在Java中签名,但byte在C#中是无符号的)

shm*_*sel 6

该问题可以分解为两个简单的步骤:1.将int数组转换为字节数组.2.将字节数组编码为base4.

这是一种方法:

public static String convertToBase64(int[] ints) {
    ByteBuffer buf = ByteBuffer.allocate(ints.length);
    IntStream.of(ints).forEach(i -> buf.put((byte)i));
    return Base64.getEncoder().encodeToString(buf.array());
}
Run Code Online (Sandbox Code Playgroud)

一个更老派的方法:

public static String convertToBase64(int[] ints) {
    byte[] bytes = new byte[ints.length];
    for (int i = 0; i < ints.length; i++) {
        bytes[i] = (byte)ints[i];
    }
    return Base64.getEncoder().encodeToString(bytes);
}
Run Code Online (Sandbox Code Playgroud)

在Ideone.com上查看正在运行的代码