我想采用UUID
类型并以Base64
编码格式输出,但是根据Base64
上的输入方法和UUID
上的输出,如何实现此目标看起来很明显。
更新虽然不是对我的用例的明确要求,但是很高兴知道所使用的方法是否使用UUID的原始UUID(UUID实际为128位),如标准的十六进制编码。
答案 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));
}
}