Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将二进制数据转换为浮点值?_C++_C_Microcontroller - Fatal编程技术网

C++ 如何将二进制数据转换为浮点值?

C++ 如何将二进制数据转换为浮点值?,c++,c,microcontroller,C++,C,Microcontroller,对于我的数据记录器项目,我将数据记录到SD卡上。这里我以二进制格式存储数据。我正在记录加速计和温湿度传感器。我可以逐字节读取数据。因此,为了打印ADXL数据(两个字节),我将每个两个字节的数据组合起来。因此,必须组合四个字节才能获得温度数据。不幸的是,对于temparature,我无法打印实际数据。有一些转换问题。我正在寻找一些关于如何将数据转换为浮动的帮助 读取二进制数据并将其打印到uint16_t(加速计数据)的代码:正常工作 } 我想知道转换的公式,比如(acc_con[1]如果你想在Py

对于我的数据记录器项目,我将数据记录到SD卡上。这里我以二进制格式存储数据。我正在记录加速计和温湿度传感器。我可以逐字节读取数据。因此,为了打印ADXL数据(两个字节),我将每个两个字节的数据组合起来。因此,必须组合四个字节才能获得温度数据。不幸的是,对于temparature,我无法打印实际数据。有一些转换问题。我正在寻找一些关于如何将数据转换为浮动的帮助

读取二进制数据并将其打印到uint16_t(加速计数据)的代码:正常工作

}


我想知道转换的公式,比如(acc_con[1]如果你想在Python中实现这一点,听起来像是模块的工作:

这假设了小的尾端字节顺序

在C语言中,可以使用
memcpy()


如果您想在Python中执行此操作,这听起来像是模块的工作:

这假设了小的尾端字节顺序

在C语言中,可以使用
memcpy()


Yap不是一个简单的函数,它将字节数组转换成浮点函数。为了避免可移植性的原因,我也在寻找实现它的方法。小端机和大端机之间也有区别。 但是这个问题有几种解决方法。 首先是文件大小,你必须包括“sys/stat.h”,与小的差异也是可移植的。但不是必需的。 将其读取为字符的缓冲区:

char f[sizeof(float)];
if (fread(f,1,sizeof(float), yourfile) ==sizeof(float))
{
    float *flt_ptr=f;
    printf("%f\n",*flt_ptr);
}

C在这些方面很好,也不需要全部强制转换。

Yap,不是简单的函数,将字节数组转换为浮点函数。我也在寻找实现它的方法,以避免可移植性的原因。little-endian和big-endian机器之间也有区别。 但是这个问题有几种解决方法。 首先是文件大小,你必须包括“sys/stat.h”,与小的差异也是可移植的。但不是必需的。 将其读取为字符的缓冲区:

char f[sizeof(float)];
if (fread(f,1,sizeof(float), yourfile) ==sizeof(float))
{
    float *flt_ptr=f;
    printf("%f\n",*flt_ptr);
}

C对于这些东西来说是很好的,也不需要全部使用。

看这是一个python还是C问题?它是C。按照下面的答案完成。看这是一个python还是C问题?它是C。按照下面的答案完成。
int nr;
FILE *fp = fopen("/sd/PCE000.bin", "rb");
float read[1];
fread(read,sizeof(float),1,fp);
pc.printf("\r\n %f",read[0]);
  fclose(fp); 
>>> struct.unpack("f", "".join([chr(x) for x in [24, 58, 46, 66]]))
(43.556732177734375,)
float x;
const unsigned char bytes[] = { 24, 58, 46, 66 };
memcpy(&x, bytes, sizeof x);
printf("%f\n", x);
unsigned int hum;
....
hum = (humicon[0] << 24) | (humicon[1] << 16) | (humicon[2] << 8) | humicon[3];
float hum_f;
....
hum_f = hum;
char f[sizeof(float)];
if (fread(f,1,sizeof(float), yourfile) ==sizeof(float))
{
    float *flt_ptr=f;
    printf("%f\n",*flt_ptr);
}