菜鸟教程小白 发表于 2022-12-13 06:50:57

ios - CoreBluetooth 发现外设广告数据格式


                                            <p><p>我正在使用 CoreBluetooth 发现 BLE 设备。
在</p>

<pre><code>- (void)centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
   advertisementData:(NSDictionary *)advertisementData
                  RSSI:(NSNumber *)RSSI
</code></pre>

<p>我收到 <code>advertisementData</code> 字典</p>

<pre><code>{
    kCBAdvDataIsConnectable = 1;
    kCBAdvDataLocalName = &#34;Gate_02&#34;;
    kCBAdvDataManufacturerData = &lt;00ff0102 0303&gt;;
}
</code></pre>

<p>如果我尝试读取 <code>advertisementData[@"kCBAdvDataManufacturerData"]</code> 类,我会获得 <code>_NSInlineData</code>。如何转换为 <code>NSString</code> 或 <code>NSData</code> 对象?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>NSInlineData</code> <em>是</em> <code>NSData</code>。更具体地说,它是 <code>NSData</code> 的(私有(private))子类 - 它是 Cocoa 中的常见模式,称为 <a href="https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaEncyclopedia/ClassClusters/ClassClusters.html" rel="noreferrer noopener nofollow">class cluster</a> . </p>

<p>所以你可以在 <code>NSInlineData</code> 的实例上使用 <code>NSData</code> 的所有方法。</p>

<p>我不确定“将 NSData 转换为 NSString”是什么意思。 <code>kCBAdvDataManufacturerData</code> 的值看起来不像 <code>NSString</code>(因为它的第一个字节是 <code>0x00</code>,通常用于终止字符串)。 </p>

<p>如果要将十六进制数据转换为十进制,则无需先将其转换为<code>NSString</code>。您可以逐字节迭代 <code>NSData</code>,如下所示:</p>

<pre><code>for(NSUInteger i = 0; i &lt; data.length; ++i) {
    Byte byte = 0;
    ;
    //do something with byte
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - CoreBluetooth 发现外设广告数据格式,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29946179/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29946179/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - CoreBluetooth 发现外设广告数据格式