将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

回到顶部