1. 使用位运算和逻辑运算符实现
#include<stdio.h>
#include<stdint.h>
int main()
{
void test_3()
{
uint16_t version = 0x1234;
printf("%#x\n",(uint8_t)version);
printf("%#x\n", version>>8);
}
}
void test_2()
{
uint16_t result = 0;
uint8_t high_byte = 2;
uint8_t low_byte = 5;
result = (high_byte <<8) | low_byte;
printf("16进制Result:%#x\n",result);
printf("10进制result:%d\n",result);
printf("%#x\n",(uint8_t)result);
printf("%#x\n", (uint8_t)(result>>8));
}
2. 高低位互换:
2.1 uint16_t高低位互换:
#define FLIPW(h) ((((uint16_t)h << 8)&0xFF00) | ((uint16_t)h >> 8))
2.2 uint32_t高低位互换:
#define HLIPW(h) ( (((uint32_t)h << 24)&0xFF000000) | (((uint32_t)h << 8)&0x00FF0000) | (((uint32_t)h >> 8)&0x0000FF00) | (((uint32_t)h >> 24)&0x000000FF) )
2.3 两个uint8_t类型合并uint16_t类型:
#define MERAGE2(h,l) ((((uint16_t)h) << 8) | l)
2.4 四个uint8_t类型合并uint32_t类型:
#define MERAGE4(one,two,three,four) (((uint32_t)one << 24) | ((uint32_t)two << 16) | ((uint16_t)three << 8) | four)