如何将 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);
我想采用类型 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);