数据类型的大小(int型为例)

上图
在这里插入图片描述
int型能表示的范围是-2147483648(-215) – 2147483647(215 -1)
int型占系统分配的4个字节(不同系统不一样)8个位,最高一位为符号位。10000000时表示-215 、01111111时表示215 - 1
unsigned int 为无符号整型范围为0 – 216 - 1,全0为0,全1为 216 - 1
在这里插入图片描述

### 使用HAL库发送int数据的方法 对于STM32或其他类似的微控制器平台,在使用硬件抽象层(HAL)库来传输`int`类的数值时,通常会涉及到串口通信(SPI, UART等)[^1]。下面以UART为展示如何通过HAL库实现这一功能。 #### 准备工作 确保已经初始化了相应的外设(UART),这一步骤一般是在项目启动文件(`main.c`)中的`MX_USARTx_UART_Init()`函数完成配置并调用初始化接口来进行设置。 #### 发送整数的具体操作 要发送一个整形变量,可以先将其转换成字符串形式再利用HAL提供的API进行字符流的输出;另一种方式则是直接按照字节顺序拆分该整量并通过循环逐个发出各个组成部分。以下是两种方法对应的代码片段: ##### 方法一:转化为ASCII码后传送 ```c #include "stdio.h" #include "string.h" void SendIntAsAscii(int value){ char buffer[10]; // 足够存储最大可能长度的整数表示及其终止符'\0' sprintf(buffer,"%d",value); // 将整数转为字符串存入buffer数组内 HAL_UART_Transmit(&huart1,(uint8_t*)buffer,strlen(buffer),HAL_MAX_DELAY); } ``` ##### 方法二:按位拆解后依次发送各部分 ```c void SendIntDirectly(int value){ uint8_t bytes[sizeof(value)]; memcpy(bytes,&value,sizeof(value)); // 复制整个整数到bytes缓冲区中去 for(size_t i=0;i<sizeof(value);++i){ HAL_UART_Transmit(&huart1,&bytes[i],1,HAL_MAX_DELAY); } } ``` 需要注意的是当采用第二种方案时接收端也需要做相应处理才能正确解析收到的信息。另外由于不同平台上`int`的实际大小可能会有所差异(比如某些架构下可能是16bits而其他地方则为32bits),所以在跨设备间传递此类原始数据之前最好确认好双方约定好的协议以及各自编译环境下的具体定义情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值