来自fetchUuidsWithSdp的奇怪UUID逆转

时间:2016-02-11 12:57:14

标签: android python bluetooth uuid endianness

我有一个运行在树莓派上的python蓝牙服务器(使用PyBluez)。我在服务器中使用的uuid是:

8f86d132-4ab8-4c15-b8df-0b70cf10ea56

我在Android应用中的蓝牙服务器上呼叫device.fetchUuidsWithSdp()。当它最终获取uuids时,它们已被反转为两个一组(似乎字节顺序已经改变)。

在广播接收器中:

Parcelable[] uuids = intent.getParcelableArrayExtra(BluetoothDevice.EXTRA_UUID);
if (uuids != null) {
    if (uuids.length > 0) {
         for (Parcelable uuid : uuids) {
              Utilities.err(uuid.toString());
         }
    } else {
         Utilities.err("no uuids");
    }
} 

例如:

8f86d132-4ab8-4c15-b8df-0b70cf10ea56 - > 56ea10cf-700b-dfb8-154c-b84a32d1868f

查看前两个字符8f,它们是反转uuid的最后两个字符。

查看后两个字符86,它们是反向uuid的第二个最后两个字符

造成这种情况的原因是什么?

这对UUID是小端还是大端有什么影响吗?

2 个答案:

答案 0 :(得分:4)

你是否有任何机会在Android版本6.0.1上体验这个? 遗憾的是,android中似乎存在一个导致此问题的错误。 https://code.google.com/p/android/issues/detail?id=197341

答案 1 :(得分:0)

您的uuid为版本4,而您的变体为Endianess。这是正常的。取决于您的系统。如果您想要大的Endianess,请放8f86d132-4ab8-4c15-88df-0b70cf10ea56

我将b更改为8。