将ByteArray转换为UUID Java
问题是如何将ByteArray转换为GUID。
以前,我将GUID转换为字节数组,经过一些事务后,我需要将GUID从字节数组中退回。我怎么做。虽然无关紧要,但是从Guid到byte []的转换如下
public static byte[] getByteArrayFromGuid(String str) {
UUID uuid = UUID.fromString(str);
ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
bb.putLong(uuid.getMostSignificantBits());
bb.putLong(uuid.getLeastSignificantBits());
return bb.array();
}
但是我该如何将其转换回来?
我尝试了这种方法,但是没有返回相同的值
public static String getGuidFromByteArray(byte[] bytes) {
UUID uuid = UUID.nameUUIDFromBytes(bytes);
return uuid.toString();
}
任何帮助将不胜感激。
回答:
该方法nameUUIDFromBytes()
将名称转换为UUID。在内部,它使用哈希和一些黑魔法将任何名称(即字符串)转换为有效的UUID。
您必须改用new UUID(long, long);
构造函数:
public static String getGuidFromByteArray(byte[] bytes) { ByteBuffer bb = ByteBuffer.wrap(bytes);
long high = bb.getLong();
long low = bb.getLong();
UUID uuid = new UUID(high, low);
return uuid.toString();
}
但是由于不需要UUID对象,因此可以执行十六进制转储:
public static String getGuidFromByteArray(byte[] bytes) { StringBuilder buffer = new StringBuilder();
for(int i=0; i<bytes.length; i++) {
buffer.append(String.format("%02x", bytes[i]));
}
return buffer.toString();
}
以上是 将ByteArray转换为UUID Java 的全部内容, 来源链接: utcz.com/qa/405509.html