【问题标题】:combine/merge two bytes into one...?将两个字节组合/合并为一个......?
【发布时间】:2012-06-25 17:07:03
【问题描述】:

我使用串行帧。我收到一个 16 位值作为两个单独的 8 位值。如何将缓冲区 [0] 与缓冲区 [1] 合并?我不想要 0b01+0b10 = 12(以 10 为底)。我希望它等于 258。

我怎样才能做到这一点?

【问题讨论】:

  • 0b01+ 0b10 = 0b11 = 3(基数为 10)。你在问什么?
  • 也许他的意思是 1 + 2 ;)

标签: objective-c bit-manipulation


【解决方案1】:
uint16_t value = (highByte << 8) | lowByte ;

【讨论】:

  • 注意字节序问题。
  • 这个答案是正确的,假设已知byte1是高字节,byte2是低字节
  • @carl 我已经更改了变量名以反映高字节和低字节。
  • @TJD:我看不出为什么不,结果当然不适合 uint8_t。试试看吧。
  • @TJD - 这不是真的。与许多其他 C 运算符一样,整数提升是在运算发生之前执行的。
猜你喜欢
  • 2012-12-16
  • 1970-01-01
  • 2021-07-16
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多