首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KheperaIV测试文件比我预期的更复杂

KheperaIV测试文件比我预期的更复杂
EN

Stack Overflow用户
提问于 2022-11-12 18:03:11
回答 1查看 18关注 0票数 0

我正在研究一个涉及Khepera IV移动机器人的本科生项目,当我阅读它附带的文件时,我遇到了一条让我困惑的界线:

代码语言:javascript
复制
for (i=0;i<5;i++) {
    usvalues[i] = (short)(Buffer[i*2] | Buffer[i*2+1]<<8);
...

从同一文件中,对机器人上的每个超声波传感器初始化为usvalues5,对于超声波传感器的采样率,Buffer[]初始化为Buffer100。但我从没见过像这样的变量集。有人能帮我理解这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2022-11-12 18:52:37

代码读取Buffer[]数组(当然它有8位元素),每次迭代按小字节顺序连续读取两个字节(低地址字节是最不重要的字节)。然后,它形成一个16位值以保存在usvalues[]中。

代码语言:javascript
复制
for (i=0;i<5;i++) {
  usvalues[i] = (short)(Buffer[i*2] | Buffer[i*2+1]<<8);

代码应该使用uint8_t Buffer[100];来防止执行有符号的左移位。

usvalues[]更适合于某些无符号类型,如uint16_tunsigned,并使用无符号操作。

代码语言:javascript
复制
uint8_t Buffer[100];
uint16_t /* or unsigned */ usvalues[5 /* or more */];

for (i = 0; i < 5; i++) {
  usvalues[i] = Buffer[i*2] | (unsigned)Buffer[i*2+1] << 8;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74415334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档