對於我的數據記錄器項目,我將數據記錄到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