gpt4 book ai didi

c++ - 从数组中获取字节值并合并它们。

转载 作者:太空宇宙 更新时间:2023-11-04 14:05:55 25 4
gpt4 key购买 nike

我有一个蓝牙模块正在向我的手机发送一个 10 BYTE 数组数据包。

我需要获取前两个字节 (0, 1) 并将它们合并在一起并将它们发送到图形查看器。 (0 = 高字节 1 = 低字节)。

字节长 12 位。

这是我目前的尝试:

// streamDelegate gave us some data, hand it over to print out
- (void)receivedData:(uint8_t *)data length:(NSUInteger)len {

uint16_t iChanI = 0;
uint16_t iChanQ = 0;

iChanI = ((data[0] <<8) + data[1]);
iChanQ = ((data[4] <<8) + data[5]);

[sView Update: iChanI : iChanQ];
[sView setNeedsDisplay];

}

我不确定 unit8_t 是否是传入数据的正确格式。

目前从图中输出的值比我预期的要大得多。

感谢任何帮助。

最佳答案

您可能使用了错误的字节序(哪个字节最重要)。所以试试

iChanI = ((data[1] <<8) + data[0]);

和/或
iChanI 的 4 MSBits 中有意外数据。将这些位归零:

iChanI &= 0x0FFF;

在一起

iChanI = ((data[1] <<8) + data[0]) & 0x0FFF;

iChanQ 做同样的事情。


您可以创建一个类型

typedef struct {
uint16_t iChanI;
uint16_t spare1;
uint16_t iChanQ;
uint16_t spare3;
uint16_t spare4;
} PhonePAcket_t; // Ten byte packet

(void)receivedData:(uint8_t *)data length:(NSUInteger)len {
const PhonePAcket_t *pp = (const PhonePAcket_t*) data;
uint16_t iChanI = pp->iChanI & 0x0FFF;
uint16_t iChanQ = pp->iChanQ & 0x0FFF;

[sView Update: iChanI : iChanQ];
[sView setNeedsDisplay];
}

我避免使用位数组,但可以使用它们。
可能需要包装属性。我对你的具体情况还不够了解。

关于c++ - 从数组中获取字节值并合并它们。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16941284/

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