【发布时间】:2019-01-07 15:09:05
【问题描述】:
我正在使用以下代码在 C# 中将 Guid 转换为 Base64:
var id = Guid.Parse("be9f1bb6-5c8e-407d-85a3-d5ef31f21b4d");
var base64=Convert.ToBase64String(id.ToByteArray());
输出
thufvo5cfUCFo9XvMfIbTQ==
当我尝试使用以下方法在 Java 中执行相同操作时:
java.util.Base64.Encoder encoder=Base64.getEncoder();
UUID uuid = UUID.fromString("be9f1bb6-5c8e-407d-85a3-d5ef31f21b4d");
ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
bb.putLong(uuid.getMostSignificantBits());
bb.putLong(uuid.getLeastSignificantBits());
encoder.encodeToString(bb.array());
不同的输出
vp8btlyOQH2Fo9XvMfIbTQ==
我在 Java 代码中做错了什么?如何获得与使用 C# 相同的结果?
【问题讨论】:
-
为什么要先解析成UID?
-
试图从字符串转换,我得到了完全不同的结果
-
为什么 Guid.parse() 和 UUID.fromString() 应该生成相同的结果?这是在某个地方定义的吗?
-
bb.array()和id.ToByteArray()不一样。 -
C#的Guid和Java的UUID不一样! This 可能对你有帮助!