方法:发送方拆分数据为多个字节,接收方再合并
- 串口通信程序中发送和接受数据以字节为单位,将int或float类型的数据拆成单个字节存放到发送字符数组中,然后接收方按照大小端模式将其重新合并为int或float类型的数据
实现:通过指针来获取单个字节,主要是指针间的强制类型转换
#include<stdio.h>
int main()
{
float send = -5.2;
char data_byte[4];
char* tmp = (char*)&send;
data_byte[0] = tmp[0];
data_byte[1] = tmp[1];
data_byte[2] = tmp[2];
data_byte[3] = tmp[3];
float receive;
receive = *((float*)data_byte);
printf("%f\n",receive);
return 0;
}
注意:
- 大端模式:高位字节存在低地址区
- 小端模式:高位字节存在高地址区
- 一般x86或者ARM架构为小端模式存储:
- char类型在x86 Linux和ARM Linux编译器下的区别:前者一般默认char 为有符号型,后者默认char为无符号型的。
- ARM Linux编译器下,下面语句执行后,data为0
float a=-5.2;
signed char data = (unsigned char)a;