把一个内容为16进制 的文本文件,转换成10进制的文本文件

该程序使用C++实现,将一个包含16进制数的文本文件(cascade.txt)读取并转换成10进制数,结果输出到新的文本文件(text.txt)中。主要通过Convert16To10函数完成16进制到10进制的转换,使用fscanf和fprintf进行文件读写操作。

把一个内容为16进制 的文本文件,转换成10进制的文本文件

[cpp]  view plain  copy
 print ?
  1. #include "stdafx.h"  
  2. #include <stdio.h>  
  3. #include <math.h>  
  4. #include <iostream>  
  5. #include <fstream>  
  6. using namespace std;  
  7. int PowerXY(int x, int y)  
  8. {  
  9.     if(y == 0)  
  10.         return 1 ;  
  11.     else  
  12.         return x * PowerXY(x, y -1 ) ;  
  13. }  
  14.   
  15. int Convert16To10(int number)  
  16. {  
  17.     int r = 0 ;  
  18.     int i = 0 ;  
  19.     int result = 0 ;  
  20.   
  21.     while(number)  
  22.     {  
  23.         r = number % 16 ;  
  24.         result += r * PowerXY(16, i++) ;  
  25.         number /= 16 ;  
  26.     }  
  27.       
  28.     return result ;  
  29. }   
  30. int main()  
  31. {  
  32.     int sum=0;  
  33.     FILE *fp,*wp;  
  34.     int i=0;  
  35.     int x;  
  36.     if((fp=fopen("cascade.txt","r"))==NULL)  
  37.     {  
  38.         printf("cannot open file");  
  39.         return -1;  
  40.     }  
  41.     if((wp=fopen("text.txt","w"))==NULL)  
  42.     {  
  43.         printf("cannot open file");  
  44.         return -1;  
  45.     }  
  46.     printf("Results:\n");  
  47.     int resutlt=0;  
  48.     while(!feof(fp))  
  49.     {  
  50.         sum++;  
  51.         fscanf(fp,"%x",&x);  
  52.         resutlt = Convert16To10(x);  
  53.   
  54.         fprintf(wp,"%d ,",resutlt);  
  55.         if (sum%16==0)  
  56.         {  
  57.           fwrite("\n",1,1,wp);//换行   
  58.         }  
  59.     }  
  60.   
  61.     fclose(fp);     
  62.     fclose(wp);  
  63.     return 0;  
  64. }  


假如cascade.txt 文件内容类似下面这样的:

13 00 00 00 07 00 00 00 14 E4 EB 5B 7B D9 55 3F
61 CA 3C C9 88 D1 54 3F 9A C4 D2 20 02 97 42 3F
8A 5A 62 B1 C2 37 41 3F B2 01 22 0E 23 CE 44 3F
38 8C 96 C4 D8 90 2F 3F 3B C6 87 6C 2F 88 39 3F
93 90 C9 5B 0E F1 38 3F FF 09 2E 56 D4 E0 14 C0
01 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00
04 00 00 00 FF FF FF FF 01 00 00 00 FF FF FF FF
0D 00 00 00 FF FF FF FF 33 FE 7D C6 85 83 FD 3F
00 00 00 00 00 00 00 00 15 00 00 00 16 00 00 00
17 00 00 00 FF FF FF FF 02 00 00 00 FF FF FF FF
0C 00 00 00 FF FF FF FF A7 96 AD F5 45 E2 1A 40

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值