首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将蓝牙16位服务UUID转换为128位UUID?

如何将蓝牙16位服务UUID转换为128位UUID?
EN

Stack Overflow用户
提问于 2016-03-25 08:01:30
回答 1查看 15K关注 0票数 21

所有assigned services仅说明16位UUID。如果我必须以128位格式指定服务,我如何确定128位对应项?

Service Discovery Protocol Overview我知道128位UUID是基于所谓的“基本UUID”,这也是在那里声明的:

代码语言:javascript
复制
00000000-0000-1000-8000-00805F9B34FB

但是如何从16位的副本创建128位的UUID呢?也许0位中的一些必须被替换,但是哪些以及如何替换呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-25 08:01:30

这可以在蓝牙4.0核心规范卷3核心系统中找到。参见the list of adopted specs

的B部分中,将在的2.5.1章“搜索服务/ UUID”下介绍服务发现协议,其中将解释如何计算UUID。

16位或32位UUID的完整128位值可以通过简单的算术运算来计算。

128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID 128_bit_value = 32_bit_value * 2^96 + Bluetooth_Base_UUID

通过将16位值零扩展到32位,可以将16位UUID转换为32位UUID格式。一种等效的方法是将16位UUID值添加到零值32位UUID。

请注意,在另一节中,有一个方便的助记符:

或者,更简单地说,16位属性UUID替换了以下代码中的x:

0000xxxx-0000-1000-8000-00805F9B34FB

此外,32位属性UUID将替换以下内容中的x:

xxxxxxxx 0000-1000-8000-00805F9B34FB

同样的等式也适用于属性UUID。参见第F部分,涵盖属性协议(ATT),在第3.2.1章“协议要求/基本概念”下。32位属性UUID首先在Bluetooth Core 4.1规范中指定。

票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36212020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档