我是编程世界的新手,我想把两个字节转换成一个单词。
基本上,我有一个字节数组,其中索引0是Buffer[0]=08,索引1是Buffer[1]=06,我想从这两个字节创建一个单词
单词ETHType to be 0x0806
发布于 2019-02-04 16:19:24
您将使用位运算符和位移位。
uint16_t result = ((uint16_t)Buffer[0] << 8) | Buffer[1];这样做的目的如下:
Buffer[0]的值向左移动8位。给你0x0800Buffer[1]值之间执行逐位OR。这将将低阶8位设置为Buffer[1],给出了0x0806发布于 2019-02-04 16:20:57
word ETHType = 0;
ETHType = (Buffer[0] << 8) | Buffer[1];编辑:您可能应该在每个操作中添加一个掩码,以确保没有一点重叠,并且可以在一行中安全地完成。
word ETHType = (unsigned short)(((unsigned char)(Buffer[0] & 0xFF) << 8) | (unsigned char)(Buffer[1] & 0xFF)) & 0xFFFF;发布于 2019-02-04 16:21:29
这里有一个宏,我用在这个东西上:
#include <stdint.h>
#define MAKE16(a8, b8) ((uint16_t)(((uint8_t)(((uint32_t)(a8)) & 0xff)) | ((uint16_t)((uint8_t)(((uint32_t)(b8)) & 0xff))) << 8))https://stackoverflow.com/questions/54520169
复制相似问题