利用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)

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值