java - 如何在Java中将值从 "%02x"转换回来?

标签 java type-conversion uuid primitive-types

我有一个字节数组,它以已知的方式转换为字符串。

public String getValueString(byte[] data) {
    StringBuilder result = "";
    for(int i = 0; i < data.length; i++) {
        result.append(String.format("%02X", data[i]));
    }
    return result.toString;
}

我正在寻找将字符串转换为字节数组的方法。

实际上字节数组是UUID,但它的表示方式和方法很奇怪

UUID.nameUUIDFromBytes(byte[] data)

不适用于我的情况。

最佳答案

这是非常简单的尝试:

byte[] data = string.getBytes();
byte[] data = string.getBytes(Charset.forName("UTF-8"));

将字节数组转换为 UIID:

ByteBuffer bb = ByteBuffer.wrap(inputByteArray);   
long firstLong = bb.getLong();   
long secondLong = bb.getLong();  

return new UUID(firstLong, secondLong);

怎么样:

  int len = s.length();
    byte[] data = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
        data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                             + Character.digit(s.charAt(i+1), 16));
    }

data 是您的字节数组。

关于java - 如何在Java中将值从 "%02x"转换回来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25206289/

相关文章:

mysql - PK for web,autoincrement vs UUID 风格,哪个更好,为什么?

java - 为什么间接增量比直接增量快?

java - 服务器和线程模型

c++ - 编译器从 `long` 转换时,`double` 和 `int ` 相同

c# - 这个对象是一个整型。我可以在不到五行的代码中得到它的值(value)吗?

C++仅使用整数数学将 float 转换为十六进制

mysql - 使用 UUID 时,是否也应该使用 AUTO_INCREMENT?

java - 如何在 Java 中生成 True UUID?

java - 使用 jOOQ 更新 Postgres 日期范围

java - 文件 I/O Java 程序无法识别 src 文件夹中的 .txt 文件