我需要帮助将ASCII字符字符串转换为单精度浮点数。我的数据格式如下:
ìÀV3é¾V3»V3AÀV3ÁV3Û¶V3ÅV3=¾V3âºV3ðÂV3߸V3¿V3é¾V3ÁV3Û¶V3é¾V3ìÀV3ÁV3é¾V3ÁV3=¾V3DÂV3DÂV30¶V¿V3:¼V3¿V3ìÀV3,´V3¿V3·V3ìÀV3
每四个字符应表示一个浮点数,例如:50.90101e-9;
我正在尝试使用以下C++代码将此字符串转换为可读数据。
但我得到了以下结果:
ìÀV3é¾V3»V3AÀV3ÁV3Û¶V3ÅV3=¾V3âºV3ðÂV3߸V3¿V3é¾V3ÁV3Û¶V3é¾V3ìÀV3ÁV3é¾V3ÁV3=¾V3DÂV3DÂV30¶V¿V3:¼V3¿V3ìÀV3,´V3¿V3·V3ìÀV3
每四个字符应表示一个浮点数,例如:50.90101e-9;
我正在尝试使用以下C++代码将此字符串转换为可读数据。
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
int main (void)
{
int i;
int no_of_bytes;
char temp_string[2048];
float this_reading[100];
char *ptr;
no_of_bytes=32;
sprintf(temp_string,"%i",no_of_bytes*4);
/*convert char string to floating point*/
sprintf(temp_string,"%i","ìÀV3é¾V3»V3AÀV3ÁV3Û¶V3ÅV3=¾V3âºV3ðÂV3߸V3¿V3é¾V3ÁV3Û¶V3é¾V3ìÀV3ÁV3é¾V3ÁV3=¾V3DÂV3DÂV30¶V¿V3:¼V3¿V3ìÀV3,´V3¿V3·V3ìÀV3");
ptr=&temp_string [1];
/*convert char string to floating point*/
for(i=0; i<no_of_bytes; i++)
{
//puts(ptr);
this_reading [i] = *((float*)ptr);
ptr = ptr+4;
printf ("%e \n", this_reading [i]);
}
}
/*end of main*/
但我得到了以下结果:
6.665629e-10
-6.321715e-30
4.056162e-02
-5.629500e+14
1.259217e-18
1.779649e-43
3.087247e+23
2.350968e-38
-2.437012e+01
9.439035e-38
0.000000e+00
-2.000000e+00
-nan
1.661560e+35
4.056162e-02
-5.629500e+14
1.259217e-18
1.779649e-43
3.096102e+23
2.350968e-38
-2.437012e+01
1.628646e+32
0.000000e+00
6.490371e+32
0.000000e+00
0.000000e+00
2.596148e+33
0.000000e+00
1.038459e+34
4.153837e+34
0.000000e+00
0.000000e+00
我尝试获取一个接近要转换的值的浮点数,将其转换为字符再使用相同的方法转换回浮点数,但结果仍然出现了相同的错误:
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
int main (void)
{
float reading;
float number;
char *ptr;
float *pointer_number;
char temp_char ;
number = 50.90101e-9;
pointer_number = & number;
printf ("%e \n",*pointer_number);
temp_char = *((char*)pointer_number);
printf ("%c \n",temp_char);
ptr=&temp_char ;
puts(ptr);
reading = *((float*)ptr);
printf ("%f \n", reading);
}
/*end of main*/
.
5.090101e-08
A
AA�Z3
22272396874481664.000000
我不是C/C++数据声明和操作方面的专家。我的最终目的是在Matlab中进行此转换。 我正在从一个非常古老的仪器读取此值。他们在仪器手册中指定,查询数据使用IEEE浮点算术标准(ANSI/IEEE Std. 754-1985)支持两种数据类型的大小。
谢谢!
#include <iostream>
这一行是C++的。请确定你使用的编程语言是哪一个... - R.. GitHub STOP HELPING ICE