如何将UUID转换为base64?

时间:2015-01-24 20:00:54

标签: java encoding base64 uuid

我想采用UUID类型并以Base64编码格式输出,但是根据Base64上的输入方法和UUID上的输出,如何实现此目标看起来很明显。

更新虽然不是对我的用例的明确要求,但是很高兴知道所使用的方法是否使用UUID的原始UUID(UUID实际为128位),如标准的十六进制编码。

2 个答案:

答案 0 :(得分:7)

首先,将您的UUID转换为字节缓冲区以供Base64 encoder消费:

ByteBuffer uuidBytes = ByteBuffer.wrap(new bytes[16]);
uuidBytes.putLong(uuid.getMostSignificantBits());
uuidBytes.putLong(uuid.getLeastSignificantBits());

然后使用编码器对其进行编码:

byte[] encoded = encoder.encode(uuidBytes);

或者,您可以像这样获得Base64编码的字符串:

String encoded = encoder.encodeToString(uuidBytes);

答案 1 :(得分:0)

您可以使用apache commons编解码器中的Base64。 https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/binary/Base64.html

import java.util.UUID;
import org.apache.commons.codec.binary.Base64;

public class Test {

    public static void main(String[] args) {
        String uid = UUID.randomUUID().toString();
        System.out.println(uid);
        byte[] b = Base64.encodeBase64(uid.getBytes());
        System.out.println(new String(b));
    }

}