0

我收到三个 uint8 值,它们是绘图值的最高、中间和最低有效数字:

EG:在控制台打印(%c):

   1 A 4

我需要将它们传递给接受 uint16_t 的信号视图 UI 绘图器。到目前为止,我这样做的方式无法正常工作。

 uint16_t iChanI = (bgp->iChanIH << 8) + (bgp->iChanIM <<4 ) + bgp->iChanIL;
 uint16_t iChanQ = (bgp->iChanQH << 8) + (bgp->iChanQM <<4) + bgp->iChanQL;

[self updateSView:iChanI ichanQ:iChanQ];

我是正确合并它们,还是只是添加值?

任何帮助深表感谢,

谢谢,

4

1 回答 1

0

您首先需要将每个十六进制字符转换为其等效的 4 位(nybble)表示,然后将它们合并为一个int16_t,例如

uint8_t to_nybble(char c)
{
    return 'c' >= '0' && c <= '9' ? c - '0' : c - 'A' + 10;
}

uint16_t iChanI = (to_nybble(bgp->iChanIH) << 8) |
                  (to_nybble(bgp->iChanIM) << 4) |
                   to_nybble(bgp->iChanIL);
于 2013-06-11T15:33:53.530 回答