我是相當新的編程,我試圖開發一個使用iOS的CoreBluetooth藍牙健身設備。我從不同的硬件製造商那裏購買了大量不同的設備進行測試,並向設備發送價值指令之一轉換uint8_t和uint16_t到NSMutableData
我希望能夠爲藍牙健身設備編寫一個值(健身目標)。我知道如何讀/寫藍牙。
我只是不知道如何將我想要的值轉換爲uint8_t和uint16_t,然後將其組合成一個8字節的NSMutableData。
誰能告訴我怎麼做?
我是相當新的編程,我試圖開發一個使用iOS的CoreBluetooth藍牙健身設備。我從不同的硬件製造商那裏購買了大量不同的設備進行測試,並向設備發送價值指令之一轉換uint8_t和uint16_t到NSMutableData
我希望能夠爲藍牙健身設備編寫一個值(健身目標)。我知道如何讀/寫藍牙。
我只是不知道如何將我想要的值轉換爲uint8_t和uint16_t,然後將其組合成一個8字節的NSMutableData。
誰能告訴我怎麼做?
首先要擔心的是字節排序。這對uint8_t
無關緊要,但對於任何更大的事物都很重要。你可以有大端或小端。檢查設備的文檔。
開始與你的價值觀:以上
uint8_t days = 12;
uint16_t walked = 225;
uint16_t ran = 110
uint16_t steps = 750;
uint8_t users = 2;
NSMutableData *data = [NSMutableData data];
[data appendBytes:&days length:1];
uint16_t network = CFSwapInt16HostToBig(walked);
[data appendBytes:&network length:2];
network = CFSwapInt16HostToBig(ran);
[data appendBytes:&network length:2];
network = CFSwapInt16HostToBig(steps);
[data appendBytes:&network length:2];
[data appendBytes:&users length:1];
假設你需要在big-endian格式的數據。如果它需要小端,則將CFSwapInt16HostToBig
更改爲CFSwapInt16HostToLittle
。
NS(可變)數據只是一個字節數組的封裝形式。您需要將您的值轉換爲字節序列。 (你知道如何在C中使用shift和mask操作,對嗎?) –
你應該。 Objective-C不適合初學者。你需要先學習C語言。 –