利用C++逐个读取txt文档中的十六位进制数据并处理

c++小白。

想要利用c++处理txt文档中的数据,先进行逐个读取,再进行根据需求进行简单处理。

#include <iostream>
#include <fstream>
#include <cassert>
#include <string>
#include <cmath>
using namespace std;
void readTxt(string file)
{
    ifstream infile; 
    infile.open(file.data());   //将文件流对象与文件连接起来 
    assert(infile.is_open());   //若失败,则输出错误消息,并终止程序运行 
	int a=0;
	int i=0;
	int j=0;
    int n=56764;   //定义原始数据存储空间
	int m=28382;   //定义运算结果数据存储空间
	int counter=0;
	string s;     //读取字符串
	int T_DATA[56764];
    double Temp[28382];
	while (!infile.eof())   //逐词读取
	{
	  infile >> s;
	  counter+=1;//计数
	  //cout<<s<<' ';    //十六进制与之后十进制对比
	  int count=s.length();//
	  int b=0,sum=0;
	  for(b=count-1;b>=0;b--)//从十六进制个位开始,每位都转换成十进制
	  {
		 if(s[b]>='0'&&s[b]<='9')//数字字符的转换
		 {
			sum+=(s[b]-48)*pow(16,count-b-1); //查ASCⅡ表
		 }
		 else if(s[b]>='a'&&s[b]<='f')//字母字符的转换
		 {
			sum+=(s[b]-87)*pow(16,count-b-1);  //差10,a余留10
		 }
	  }
	  T_DATA[i]=sum;  //逐一保存数据
	  //cout<<T_DATA[i]<<endl;  //观察读取的数据
	  i+=1;
	}
	for(;j<counter/2-1;j++)
	{   
		Temp[j]=(double)(T_DATA[a]*256+T_DATA[a+1])/10;//数据关系
		a=a+2;
		cout<<Temp[j]<<' ';
	}
			
    infile.close();     //关闭文件输入流 
}
int main()
{   
	string fname,data_path;
	cout<<"请输入txt数据文件名:"<<endl; //键输入原始数据txt文件名
	cin>>fname;
	data_path="D:\\Desktop\\"+fname+".txt";
	readTxt(data_path);
	return 0;
}

以上还可以对数据作图处理。

参考文章:

1. C++ 中 ifstream读取txt文件内容_流楚丶格念的博客-CSDN博客_ifstream读取txt文件

2.【c++程序】十六进制转换十进制_平凡的世界-CSDN博客_十六进制转十进制c++代码

3. C++读取文本文件----逐个读出每个数据-C++技术网 (cjjjs.com)

猜你喜欢

转载自blog.csdn.net/Lucasxh/article/details/121898750