Java将无符号整数转换为UUID

时间:2016-08-22 19:46:12

标签: java android bluetooth uuid

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

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

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

如果它有帮助,我使用RxAndroidBle来处理蓝牙通信。

2 个答案:

答案 0 :(得分:1)

UUID是16个字节,构造函数允许您使用两个long构建它。从您的问题中不清楚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);
    }
}

答案 1 :(得分:0)

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