Java将无符号整数转换为UUID

Java将无符号整数转换为UUID,java,android,bluetooth,uuid,Java,Android,Bluetooth,Uuid,我正在编写一个Android应用程序,它需要与一个蓝牙LE设备通信,该设备具有我需要订阅的特性,其UUID的格式都像0xA009、0xA011等 有一个UUID.fromString方法,但我还没有找到任何接受该UUID格式的方法。在java中,我需要做什么才能将这些转换为java.util.UUID的实例 我只需要将0xA009编码为java.util.UUID,这样我就可以使用该UUID和其他类似格式的UUID订阅Bluetooth LE特性 如果有帮助的话,我正在使用RxAndroidBl

我正在编写一个Android应用程序,它需要与一个蓝牙LE设备通信,该设备具有我需要订阅的特性,其UUID的格式都像0xA009、0xA011等

有一个UUID.fromString方法,但我还没有找到任何接受该UUID格式的方法。在java中,我需要做什么才能将这些转换为java.util.UUID的实例

我只需要将0xA009编码为java.util.UUID,这样我就可以使用该UUID和其他类似格式的UUID订阅Bluetooth LE特性


如果有帮助的话,我正在使用RxAndroidBle来处理蓝牙通信。

0x是十六进制格式。尝试从十六进制转换为字符串,然后使用UUID.fromString。祝你好运

UUID是16个字节,构造函数让您用两个长字节构建它。从您的问题中不清楚0xA009、0xA011等是否是单个UUID的多个2字节块,或者它们是否是具有假定前导零或类似内容的单独UUID

因此,您必须进行一些预处理,去掉0x,可能用零填充,并使十六进制字节至少在一行中有8个,以便将它们解析为long。如果将所有16个十六进制字节放在一起,则可以执行以下操作:

import java.util.UUID;

public class UUIDTest {
    public static void main(String[] args) {
        String uuidString = "0123456789ABCEF00FECBA9876543210";
        long mostSig = Long.parseLong(uuidString.substring(0, 16), 16);
        long leastSig = Long.parseLong(uuidString.substring(16, 32), 16);
        UUID uuid = new UUID(mostSig, leastSig);
        System.out.println(uuid);
    }
}

所以没有直接的方法?我没有发现任何好的东西可以从十六进制转换到字符串,只是从字符串转换到十六进制(我不在乎)。你能给我指个方向吗?unicode对字符串有什么帮助?我仍然需要十六进制来串线,还是我遗漏了什么?我从来没有在C语言之外处理过这些格式,我可以简单地声明uint a=0xA009。告诉我你得到的输出以及你是如何得到的,我会给你写一个方法来转换它。这就是我所需要做的:java.util.UUID aUUID=0xA009。很抱歉,我不能给出更多的细节。我正在开发专有软件,不能透露细节。谢谢你的帮助。这不可能是所有的uuid。我需要知道它在内存中是什么类型,才能知道如何转换它。