#include <stdio.h>
#include <stdlib.h>
#define max_len 68760*16
#define max_float_len 68760*4
/**************************************
total:12103523
channel1:0xE1:68760
channel2:0xE3:68760
channel3:0xE5:68760
channel4:0xE7:68760
channel5:0xEF:68760
channel6:0xE9:68760
channel7:0xEB:68760
channel8:0xED:68760
**************************************/
typedef union
{
float fdata;
unsigned long ldata;
}floatlongType;
void Byte_to_Float(float* f,unsigned char byte[])
{
floatlongType fl;
fl.ldata=0;
fl.ldata=byte[3];
fl.ldata=(fl.ldata<<8)|byte[2];
fl.ldata=(fl.ldata<<8)|byte[1];
fl.ldata=(fl.ldata<<8)|byte[0];
*f=fl.fdata;
}
//int main()
//{
// unsigned char byte[4]={0x69,0xA0,0x06,0xBF};
// float f;
// Byte_to_Float(&f,byte);
// printf("%f",f);
// return 0;
//}
int main()
{
FILE * fp;
FILE* out;
unsigned char * pbuf;
long fsize = 0;
int i = 0;
int j = 0;
int tmp = 0;
// int newline = 0;
unsigned char byte[4] = {0};
float float_array[max_float_len] = {0};
int package_num = 0;
unsigned char* result_buf;
result_buf = (unsigned char*)malloc(max_len);
//printf("argc = %d, filename = %s\n", argc, argv[1]);
fp = fopen("C:/Temp/eeg_record.bin", "rb");
if(!fp)
{
perror("error ");
return 2;
}
fseek(fp, 0, SEEK_END);
fsize = ftell(fp);
// printf("%d\n",fsize);
fseek(fp, 0, SEEK_SET);
pbuf = (unsigned char *)malloc(fsize);
if(NULL == pbuf)
{
printf("malloc failed!\n");
return 3;
}
fread(pbuf, 1, fsize, fp);
while(i < fsize)
{
if((!(pbuf[i]^0xFA))&&(!(pbuf[i+1]^0x55))&&(!(pbuf[i+2]^0xAA))&&(!(pbuf[i+3]^0xE1)))
{
for(j=0;j<16;j++)
{
result_buf[tmp+j] = pbuf[i+j+5];
// printf("%3.2x\n",result_buf[tmp+j]);
}
tmp = tmp + 16;
package_num++;
}
// printf("%3.2x", pbuf[i]);
// i++;
i++;
// if(++newline == 16)
// {
// printf("\n");
// newline = 0;
// }
}
printf("package_num:%d\n",package_num);
i=0;
j=0;
while(i<max_len)
{
byte[0] = result_buf[i++];
byte[1] = result_buf[i++];
byte[2] = result_buf[i++];
byte[3] = result_buf[i++];
Byte_to_Float(&float_array[j],byte);
//printf("%f\n",float_array[j]);
j++;
}
out = fopen("C:/Temp/output.bin","wb");
// fwrite(result_buf,1,max_len,out);
// fwrite(float_array,4,max_float_len,out);
for(i=0;i<max_float_len;i++)
{
fprintf(out,"%f%c",float_array[i],'\n');
}
printf("Over\n");
free(pbuf);
fclose(fp);
fclose(out);
return 0;
}
读取二进制文件部分内容
猜你喜欢
转载自blog.csdn.net/qq_34121068/article/details/79930159
今日推荐
周排行