当前位置: 首页 > 知识库问答 >
问题:

TinyOS:将uint16_t和uint8_tuint32_t

姜天宇
2023-03-14

我有以下问题:

我有一个uint8_th_MSBuint16_th_LSB我想要将它们组合成一个uint32_t

这是我的代码:

void  parseHeader(MyPackage Header,uint32_t* timeStamp ){
(*timeStamp) = (Header->h_MSB <<16)| Header->h_LSB;
} 

但它似乎不起作用;

我尝试了h_MSB = 10h_LSB = 10

时间戳是10。

问题似乎是,如果我将beyon 7位移位,h_MSB丢失的所有信息,但是由于时间戳是uint32_t,它怎么可能呢?

共有1个答案

陆正奇
2023-03-14

问题是h_MSBuint8_t,移位操作是在uint8_t类型中执行的(或者可能在uint16_t中执行,但没关系),所以你得到0。在移位之前将其转换为uint32_t

(*timeStamp) = (((uint32_t)Header->h_MSB) << 16) | Header->h_LSB;
 类似资料:
  • TinyOS是一款自由和开源的基于元件(component-based)的操作系统和平台,它主要针对无线传感器网络(WSN, wireless sensor network)。TinyOS是用nesC程序编写的嵌入式操作系统,其作为一系列合作项目的结果。 它的首先出现是做为UC Berkeley和Intel Research合作实验室的杰作,用来嵌入智能微塵当中,之后慢慢演变成一个国际合作项目,即

  • uint8_t, uint16_t, uint32_t, uint64_t 是什么数据类型? 那么_t的意思到底表示什么?它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。 uint8_t,uint16_t,uint32_t 等都不是什么新的数据类型,它们只是使用typedef给类型起的别名,新瓶装老酒的把戏。不过,不要小看了ty

  • 产生以下输出: 然而,据我所知,Java不支持操作符重载,官方文档对此只字不提,这就是我的问题。

  • 有人能告诉我是否可以添加 谷歌不是朋友,PostSharp的留档也没有帮助。我知道在哪里可以创建自定义格式化程序或后端,但我在这些示例中看不到如何自定义方法入口和方法出口的日志条目。 实际PostSharp日志输出w/NLog 需要的PostSharp日志输出,带NLog 我正在使用以下内容: 我使用的是直接从他们的示例中提取的NLog配置: 我没有任何其他代码可以显示,因为我不知道从哪里开始编写

  • 我正在使用RestEasy、Jboss 7和EJB 3.1。我正在创建一个以JSON格式返回数据的RESTful Web服务。 问题是我在一个实体上有一个关系,这会在序列化期间导致无限递归。我尝试使用Jackson的和annotation来解决这个问题,但似乎它们被完全忽略了,无限递归仍在发生。 这是我的用户类: 这是我角色课的一部分: 我在某处读到过,我应该用我的应用程序注册Jackson,以便

  • 问题内容: 这是我的查询 ,列为nvarchar数据类型,为INT数据类型 表格如下 预期结果 在这里,我需要将输出从行转换为列,并找到总计并将其放置在每个范围的最后一列中。 问题答案: 您应该可以使用类似于以下内容的东西: 参见带有演示的SQL Fiddle