对于我的数据记录器项目,我将数据记录到SD卡。在这里我以二进制格式存储数据。我正在记录加速度计和温度传感器。我可以逐字节读取数据。因此,为了打印ADXL数据(两个字节),我组合了每两个字节的数据。因此必须组合四个字节来获取温度数据。不幸的是,我没有打印实际的数据。有一些转换问题。我正在寻找一些关于如何将数据转换为浮点数的帮助。如何将二进制数据转换为浮点值?
代码来读取和打印二进制uint16_t(加速度数据):工作
while ((nr = fgetc(logFile)) != EOF){
pc.printf(" \r\n %d ",nr);
acc_con[i] = nr;
if (i == 1){
acc = (acc_con[1]<<8) | acc_con[0];
pc.printf(" \r\n %i ",acc);
i = 0;}
else i++;
}
代码来读取和打印二进制浮动(北部沿海地区数据):不工作
while ((nr = fgetc(logFile)) != EOF){
pc.printf(" \r\n %d ",nr);
humicon[i] = nr;
if (i == 3){
hum = (humicon[0] << 24) | (humicon[1] << 16) | (humicon[2] << 8) | humicon[3];
pc.printf(" \r\n %f ",hum);
i = 0;}
else i++;
}
由字节来自变量nr的8字节原始数据是:24,58,46,66,变量hum的输出是:406466112.000000。
我可以用fread读湿度或温度(浮标)。不幸地使用fread我必须知道存储在文件中的字节数。使用下面的代码,我也可以打印浮动图案。 INT主(){
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);
}
我想知道像转换式(acc_con [1] < < 8)| acc_con [0]。谢谢。
请参阅[**'struct' **](https://docs.python.org/3/library/struct.html) –
这是python还是C的问题? – cdarke
是C.做了如下答案。 – Gandhi