当前位置: 首页 > 面试题库 >

将ByteArray转换为UUID Java

万俟英锐
2023-03-14
问题内容

问题是如何将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();
}


 类似资料:
  • 在我的spring应用程序中,我正在获取FilePart对象,并需要将其转换为byteArray。 以下是我的代码。 但它给了我错误 非法状态异常: 块 ()/块第一()/块最后 () 正在阻塞,这在线程反应器中不受支持

  • 问题内容: 如何使用JavaScript转换字节数组中的字符串。输出应等效于以下C#代码。 由于UnicodeEncoding默认为具有Little-Endianness的UTF-16。 编辑: 我需要使用上面的C#代码将字节数组生成的客户端与服务器端生成的字节数组进行匹配。 问题答案: 在C#中运行 将创建一个数组 对于代码大于255的字符,它将如下所示 如果您希望在JavaScript中实现非

  • 问题内容: 我正在开发一些应用程序,它允许从SD卡中选择图像,将其保存到数据库中并为ImageView设置此值。我需要知道将uri转换为字符串并将字符串转换为uri的方法。现在,我使用了Uri的getEncodedPath()方法,但是例如,此代码不起作用: 因此,我不知道如何将Uri保存到数据库中并根据保存的值创建新的Uri。请帮我修复它。 问题答案: 我需要知道将uri转换为字符串并将字符串转

  • 我正在努力将图像标记转换为链接并复制标记内的参数,即。 进入 我的问题不仅仅是复制src和alt数据,还包括丢失和额外的标记。 进入 和 进入 这需要对整个字符串中img标记的所有实例执行。 不是说听起来像是一个挑战,但是有人能提出一个可能的解决方案吗,我相信这可以用preg_replace但是我就是做不到? 非常感谢。

  • 最近,我浏览了一些网站,将中缀转换成前缀符号,最后我被卷了起来。 我已经给出了我所做的步骤。。 例:-(1(2*3))(5*6)(7/8) 方法1:-(无需任何算法的手动转换):- 方法2:- 根据现场情况http://scanftree.com/Data_Structure/infix-to-prefix 所以,在这里我完全被绞死了。 请任何人提供以下方面的信息:- 关于我在以上2种方法中哪里出

  • 问题内容: 如何从float转换为string或从string转换为float? 在我的情况下,我需要在2个值字符串(我从表中获得的值)和我计算出的浮点值之间进行断言。 我尝试从浮动到字符串: 但是断言失败 问题答案: 使用Java的类。 为了进行比较,将字符串转换为float并比较两个float总是更好。这是因为对于一个浮点数,存在多个字符串表示形式,与字符串相比,它们是不同的(例如“ 25”!