/*
获取16位无符号整数高字节的三种方法(基于小端存储)
*/
#include <stdio.h>
#include <stdint.h>
#define highByte(x) ((uint8_t)((x) >> 8)) //通过多于一个字节的移位运算实现
typedef union number { //通过联合体实现
uint16_t value; //利用联合体的成员共用内存,结构体的成员连续存放
struct {
uint8_t low, high;
} half;
} number16_t;
uint8_t getHighByte(uint16_t n) { //通过指针运算实现
uint8_t * ptr = (uint8_t *)&n; //利用低位字节存放在低地址,高位字节存放在高地址
return *(ptr + 1);
}
int main() {
uint16_t num = 0xABCD;
number16_t num1 = {0xABCD};
printf("way 1: %X\n", highByte(num));
printf("way 2: %X\n", getHighByte(num));
printf("way 3: %X\n", num1.half.high);
return 0;
}
获取16位无符号整数高字节的三种方法(基于小端存储)
最新推荐文章于 2023-07-31 11:21:49 发布