串⼝通信实现Int或float类型数据传输的⽅法
⽅法:发送⽅拆分数据为多个字节,接收⽅再合并
串⼝通信程序中发送和接受数据以字节为单位,将int或float类型的数据拆成单个字节存放到发送字符数组中,然后接收⽅按照⼤⼩端模式将其重新合并为int或float类型的数据
实现:通过指针来获取单个字节,主要是指针间的强制类型转换
#include<stdio.h>
//以float为例
int main()
{
float send =-5.2;
char data_byte[4];
//获取原数据的指针并将其强制转换为char*
char* tmp =(char*)&send;
//通过tmp指针取出每个字节,tmp[i]等效为*(tmp+1)
data_byte[0]= tmp[0];
data_byte[1]= tmp[1];
data_byte[2]= tmp[2];
data_byte[3]= tmp[3];
//模拟接收⽅,x86或者ARM架构为⼩端模式存储数据
float receive;
receive =*((float*)data_byte);
x86架构和arm架构区别
printf("%f\n",receive);
return0;
}
注意:
⼤端模式:⾼位字节存在低地址区
⼩端模式:⾼位字节存在⾼地址区
⼀般x86或者ARM架构为⼩端模式存储:
char类型在x86 Linux和ARM Linux编译器下的区别:前者⼀般默认char 为有符号型,后者默认char为⽆符号型的。
ARM Linux编译器下,下⾯语句执⾏后,data为0
float a=-5.2;//a⼩于0
signed char data =(unsigned char)a;//执⾏完成之后data为0,当a>0时,可以得到正数,需要改为:(signed char)a

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。