1.生成数据
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
FILE *l_pFile = fopen("E:/workspace/001.dat", "wb");
if (l_pFile == NULL)
{
cout << "File Open Fail" << endl;
}
double l_dNum = (pow(2,15)-1)/512;
double l_dLow = -pow(2,15);
int l_iBuffer = l_dLow;
for (int i=0; i<1024; i++)
{
if (i > 0)
{
l_iBuffer += l_dNum;
}
cout << l_iBuffer << " ";
fwrite(&l_iBuffer, sizeof(int), 1, l_pFile);
}
fclose(l_pFile);
cout << "Hello World!" << endl;
return 0;
}
2.数据转换 int32 -> int16
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
FILE *l_pReadFile = fopen("E:/workspace/001.dat", "rb");
if (l_pReadFile == NULL)
{
cout << "Read File Open Fail" << endl;
}
FILE *l_pWriteFile = fopen("E:/workspace/002.dat", "wb");
if (l_pWriteFile == NULL)
{
cout << "Write File Open Fail" << endl;
}
int l_iBuffer;
short l_sBuffer;
for (int i=0; i<1024; i++)
{
fread(&l_iBuffer, sizeof(int), 1, l_pReadFile);
l_sBuffer = (short)(l_iBuffer/(pow(2,15)-1)*(pow(2,7)-1));
fwrite(&l_sBuffer, sizeof(short), 1, l_pWriteFile);
}
fclose(l_pWriteFile);
fclose(l_pReadFile);
cout << "Hello World!" << endl;
return 0;
}
3.显示数据(Qt5.8.0)
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QDebug>
#include <QPainter>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
void showData();
void paintEvent(QPaintEvent *event);
private:
Ui::Widget *ui;
QPoint *m_pPoints;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
showData();
}
Widget::~Widget()
{
delete[] m_pPoints;
delete ui;
}
void Widget::showData()
{
m_pPoints = new QPoint[1024];
FILE *l_pFile = fopen("E:/workspace/002.dat", "rb");
if (l_pFile == NULL)
{
qDebug() << "Open File Fail";
return;
}
short l_sNum;
for (int i=0; i<1024; i++)
{
fread(&l_sNum, sizeof(short), 1, l_pFile);
m_pPoints[i].setX(i);
m_pPoints[i].setY((int)l_sNum);
}
fclose(l_pFile);
// this->repaint();
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPolygon(m_pPoints, 1024);
}
4.运行效果