unsigned 8位、16位、32位和64位整型变量
uint8_t、uint16_t、uint32_t、uint64_t
一、C语言数据类型介绍
在C语言当中,数据类型主要分为四大种:基本类型、构造类型、指针类型和空类型void。
其中基本类型包含两大类:整型和浮点型;
构造类型类型包含数组、结构体 struct、共用体 union、枚举enum。
char //1个字节
int //4个字节
float //4个字节
double //8个字节
二、uint8_t、uint16_t、uint32_t、uint64_t
uint8_t、uint16_t、uint32_t、uint64_t等都并非新的数据类型,他们都是用typedef定义的,也就是起别名,他们包含于<stdint.h>中。
在头文件中的定义如下:
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __INT64 uint64_t;
uint8_t //1个字节
uint16_t //2个字节
uint32_t //4个字节
uint64_t //8个字节
输出格式:
uint8_t //%d //(整型变量时)
uint16_t //%d or %hu
uint32_t //%u
uint64_t //%llu
注:uint8_t实际上是一个char。所以输出uint8_t类型的变量实际上输出其对应的字符,而不是数值。
三、uint16_t转为uint8_t
在单片机当中,各种传感器的数据多数是32位或者16位的,在STM32的HAL库开发当中,其发送函数是8位的,此时不能不能直接发送不同类型的数据,会发生精度丢失,此时则需要进行转换。
uint8_t array[2];
array[0]=(address&0xFF00)>>8; //取地址的高8位
array[1]=address&0x00FF; //取地址的低8位
学习路上小笔记,觉得对你有用的小伙伴请点个赞!