如何用c语言从串口读取的16进制数中提取4个字节变为浮点数?急!!!

如题。我现在从串口读取了5个字节,存在了字符数组temp中,temp[5]={0x0c,0xb1,0x8d,0x40,0x40}。其中后四个字节是我需要的数据,我怎么才能把这4个字节提取出来转化为浮点数,并输出呢??

给你个思路,直接给你编的话可能对不上你的代码。
自己再定义一个数组temp1,给一个for循环,类似于
for(i = 1; i < 5; i ++){
temp1[i - 1] = temp[i];

}
这样temp1[]中就存储了你的后四个字节,之后再将这个temp1的元素一个一个转换为十六进制输出就好,比如说
for(pos = 0;pos < 4; pos ++)
printf("%f ",(float)temp1[pos]);
printf("\n");
温馨提示:内容为网友见解,仅供参考
无其他回答

如何用c语言从串口读取的16进制数中提取4个字节变为浮点数?急!!!
temp1[i - 1] = temp[i];} 这样temp1[]中就存储了你的后四个字节,之后再将这个temp1的元素一个一个转换为十六进制输出就好,比如说 for(pos = 0;pos < 4; pos ++)printf("%f ",(float)temp1[pos]);printf("\\n");

求C语言程序,在单片机中将四位16进制数转化为ASC码,并传给PC机_百度知...
void main(){ uchar OutDat; \/\/定义输出变量 TMOD=0x20; \/\/TMOD=0 TH1=0xf3; \/\/12MHZ ,BPS:4800,N,8,1 TL1=0xf3;PCON=0x80; \/\/方式一 TR1=1;SCON=0x40; \/\/串口通信控制寄存器 模式一 OutDat=0xaa; \/\/向串口发送固定数据值 for(;;) \/\/循环程序 ...

C语言, 关于16进制的串口发送的问题
先定义一个union { unsigned int i;unsigned char ac[4];} udata;udata.i=1;if ( udata.ac[0]== 1 ) \/\/小端机,则从低到高发送 { udata.i=123456789 ;int j=0;while( j<4 ){ send_data_uart( udata.ac[j] );j++ ;} } else \/\/大端机,从高到低发送 { udata.i=123456789 ...

如何用C对串口发送16进制数
1. **初始化串口**:首先,需要配置串口参数,包括波特率、数据位、停止位和校验位等。这通常通过调用操作系统提供的API完成,如在Linux下使用`termios`结构体和相关函数(如`tcsetattr`)进行配置,在Windows下则可能使用`CreateFile`、`SetupComm`等函数。2. **准备数据**:将要发送的16进制数转换为...

c语言单片机编程中,怎样将一个串口的到得字符串赋值给一个数组
1、串口字节为:SBUF暂存数组:A[]依次将接收到的字节存入A[0],A[1],A[2],...A[n],接收完毕,存入字符串结束标识:A[N+1]=0A就代表一个字符串。如果是一串数字,要转为整数。2、例程:include<reg51.h>#define uchar unsigned charuchar A[16],num;void uart() interrupt 4{if(RI) ...

C语言的问题,char型输出的16进制数值怎么输出十进制值来直接利用_百度...
1、对计算机来说,某一个变量不管是char,int,它在存储时都是二进制的数字而已,输出16进制应该是在com_putchar中控制的,对于一个数来说,输出的格式是几进制是程序来控制的,比如printf("%d", dl), 那么送到终端显示的是十进制的,如果是%x就是16进制,%o就是8进制,但是在程序里,dl就是一...

...想把变量z转换成char类型数组(或int型8位数组16进制)请问如何...
\/\/取十位上的数intnum3=a%10;\/\/取个位上的数num_arr[0]=num0+48;num_arr[1]=num1+48;num_arr[2]=num2+48;num_arr[3]=num3+48;printf("%c",num_arr[0]);printf("%c",num_arr[1]);printf("%c",num_arr[2]);printf("%c",num_arr[3]...

C语言的问题,char型输出的16进制数值怎么输出十进制值来直接利用_百度...
1、对计算机来说,某一个变量不管是char,int,它在存储时都是二进制的数字而已,输出16进制应该是在com_putchar中控制的,对于一个数来说,输出的格式是几进制是程序来控制的,比如printf("%d", dl), 那么送到终端显示的是十进制的,如果是%x就是16进制,%o就是8进制,但是在程序里,dl就是一...

c语言中如何将10进制的浮点数转化为16进制存放到char型数组中?
本人在串口通信中就用到这个,讲浮点数(不谈进制)转化为字符型(楼主所谓的16进制)放入char字符数组。更精确的说应该是将浮点数,以字节形式放入字节数组(不是char数组哦,因为char是有符号的),用以后续的通信传输(大多数的应用吧)。我用的基本方法是union(联合)代码如下:union UFLOAT { flo...

在单片机C语言怎么把16进制数变成10进制发到串口
串口都是用16进制发送的,有两种办法,在接收到数据之后你把16进制转为10进制就可以了,比如你发送的十进制10,传送的时是十六进制0x0A,接收到数据后转成10进制 0AH = 10。在发送时把数据转换成BCD码,发送十进制10,转成BCD码十六进制就是0x10,接收到数据时显示的就是10H。BCD码转换百度一下...

相似回答