gpt4 book ai didi

Java将无符号整数转换为UUID

转载 作者:行者123 更新时间:2023-11-30 01:03:52 30 4
gpt4 key购买 nike

我正在编写一个 Android 应用,它需要与蓝牙 LE 设备进行通信,该设备具有我需要订阅的特征,其 UUID 的格式均为 0xA009、0xA011 等。

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

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

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

最佳答案

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

因此您必须进行一些预处理以去除 0x,可能用零填充,并将十六进制字节放在一起至少连续 8 个,这样您就可以将它们解析为长整数。如果您将所有 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);
}
}

关于Java将无符号整数转换为UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39087549/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com