| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1163 人关注过本帖, 1 人收藏
标题:求助:十进制数据文件转为十六进制数据的文件
只看楼主 加入收藏
重大C语言
Rank: 2
等 级:论坛游民
帖 子:76
专家分:70
注 册:2012-11-16
收藏
得分:3 
回复 楼主 原来一如当初
可如此如此......
建一个"in.txt"文件夹,把数据输入进去即可。
#include<stdio.h>
#include<string.h>
#define size 20

void main()
{ int to_int(char * p);
  FILE *f;
  FILE *k;
  char p[size],a[2];
  int i=0,t;
  if((f=fopen("in.txt","r"))==NULL)
  { printf("can't open the file!");
    return;
  }
  while(fgets(p,size,f)!=NULL)
  {  i++;
     t=to_int(p);
     k= fopen( "out.txt","a");
     if( k!= NULL )
     fprintf(k,"%x\n",t);
     
     fprintf( k,"%02X\n%02X\n%02X\n%02X\n"
                , (unsigned)((t>>24)&0xFF)
                , (unsigned)((t>>16)&0xFF)
                , (unsigned)((t>> 8)&0xFF)
                , (unsigned)((t>> 0)&0xFF),t);
     
     fclose(k);
  }
     fclose(f);
}

     
int to_int(char * p)
{
int n;
int i;
int count=0;

for(i = count = 0; p[i]; i++)
count = count * 10 + (p[i] - '0');
return count;
}
2013-08-23 23:55
重大C语言
Rank: 2
等 级:论坛游民
帖 子:76
专家分:70
注 册:2012-11-16
收藏
得分:0 
这样:
#include<stdio.h>
#include<string.h>
#define size 20

void main()
{ int to_int(char * p);
  FILE *f;
  FILE *k;
  char p[size],a[2];
  int i=0,t;
  if((f=fopen("in.txt","r"))==NULL)
  { printf("can't open the file!");
    return;
  }
  while(fgets(p,size,f)!=NULL)
  {  i++;
     t=to_int(p);
     k= fopen( "out.txt","a");
     if( k!= NULL )
     fprintf(k,"%x\n",t);
     
     fprintf( k,"%02X\n%02X\n%02X\n%02X\n"
                , (unsigned)((t>>24)&0xFF)
                , (unsigned)((t>>16)&0xFF)
                , (unsigned)((t>> 8)&0xFF)
                , (unsigned)((t>> 0)&0xFF),t);
     
     fclose(k);
  }
     fclose(f);
}

     
int to_int(char * p)
{
int n;
int i;
int count=0;

for(i = count = 0; p[i]; i++)
count = count * 10 + (p[i] - '0');
return count;
}
2013-08-23 23:57
重大C语言
Rank: 2
等 级:论坛游民
帖 子:76
专家分:70
注 册:2012-11-16
收藏
得分:0 
对不起手一抖重复发了。
2013-08-24 00:00
原来一如当初
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2013-8-14
收藏
得分:0 
回复 11楼 重大C语言
谢谢大神,但是好像有点问题。原文件的格式是如此如此:
 102734824
  31638762
   8326012
   5270917
   5270917
   1897847
   1037467
   4989700
......
你的程序运行的结果是如此如此:
ffffffda
FF
FF
FF
DA
25ae9c0
02
5A
E9
C0
25a8ee4
02
5A
......
但我需要的是如此如此:( 102734824=061F9BE8H)
06
1F
9B
E8

01
E2
C4
EA
00
7F
0B
7C

00
50
6D
85
......
虽然我已经全都转成功了,但方法很笨,步骤很多,一共21个文件几百兆弄得头大了。所以还想继续学习以备后用!
需求重复一下:把上面10位*n行装有十进制数据的文件,变成装有十六进制数据的文件(本来会变成8位*n行,但需要再变成2位*4n行,因为我的另一个程序需要调用这种格式的数据)。进制转换我大概了解,就是这个文件调用格式我不太清楚。我只会调二进制的文件,一位一位地读,用的是fgetc.
2013-08-24 16:26
原来一如当初
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2013-8-14
收藏
得分:0 
回复 9楼 唐书豪
嗯嗯,就是你说的那个意思,不过这里的字符串数字是十进制数而不是二进制,所以我就不会了
2013-08-24 16:31
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:3 
不能直接按fscanf("%d")来读?
2013-08-24 17:52
重大C语言
Rank: 2
等 级:论坛游民
帖 子:76
专家分:70
注 册:2012-11-16
收藏
得分:0 
回复 15楼 原来一如当初
应该是to-int这个有问题所以有错,我没有找出来,所以我放弃了。
抱歉。
2013-08-27 12:19
yaner001
Rank: 2
等 级:论坛游民
帖 子:7
专家分:14
注 册:2013-8-27
收藏
得分:3 
顶楼主一下!   
2013-08-27 20:16
快速回复:求助:十进制数据文件转为十六进制数据的文件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020388 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved