首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >怎样从拜德那里造一个词?

问怎样从拜德那里造一个词?
EN

Stack Overflow用户
提问于 2019-02-04 16:17:57
回答 3查看 1.6K关注 0票数 4

我是编程世界的新手,我想把两个字节转换成一个单词。

基本上,我有一个字节数组,其中索引0是Buffer[0]=08,索引1是Buffer[1]=06,我想从这两个字节创建一个单词

单词ETHType to be 0x0806

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-04 16:19:24

您将使用位运算符和位移位。

代码语言:javascript
复制
uint16_t result = ((uint16_t)Buffer[0] << 8) | Buffer[1];

这样做的目的如下:

  • Buffer[0]的值向左移动8位。给你0x0800
  • 在先验值和Buffer[1]值之间执行逐位OR。这将将低阶8位设置为Buffer[1],给出了0x0806
票数 5
EN

Stack Overflow用户

发布于 2019-02-04 16:20:57

代码语言:javascript
复制
word ETHType = 0;
ETHType = (Buffer[0] << 8) | Buffer[1];

编辑:您可能应该在每个操作中添加一个掩码,以确保没有一点重叠,并且可以在一行中安全地完成。

代码语言:javascript
复制
word ETHType = (unsigned short)(((unsigned char)(Buffer[0] & 0xFF) << 8) | (unsigned char)(Buffer[1] & 0xFF)) & 0xFFFF;
票数 2
EN

Stack Overflow用户

发布于 2019-02-04 16:21:29

这里有一个宏,我用在这个东西上:

代码语言:javascript
复制
#include <stdint.h>

#define MAKE16(a8, b8) ((uint16_t)(((uint8_t)(((uint32_t)(a8)) & 0xff)) | ((uint16_t)((uint8_t)(((uint32_t)(b8)) & 0xff))) << 8))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54520169

复制
相关文章

相似问题

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