如何将 UUID 转换为 base64?

How can I convert a UUID to base64?

我想采用类型 UUID 并以 Base64 编码格式输出它,但是考虑到 Base64 上的输入方法和 UUID 上的输出如何完成这似乎并不明显。

update 虽然不是我的用例的明确要求,但很高兴知道所使用的方法是否使用原始 UUID(UUID 实际上是 128 位) UUID,就像标准的十六进制编码一样。

您可以使用 Apache 通用编解码器中的 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));
    }

}

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

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

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

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

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

String encoded = encoder.encodeToString(uuidBytes);