回 帖 发 新 帖 刷新版面

主题:C语言将十六进制转换为十进制的原理和程序

诚心求!最好加以解释,真的有点难以编写此程序,谢谢

回复列表 (共2个回复)

沙发


#include <stdio.h>
#include <string.h>
void main()

 
 long i;
 int j;
 FILE *pf;
 char temp[44];

 memset(temp,'\0',sizeof(temp));
 if((pf=fopen("REC00010.DRM","rb"))!=NULL)
 {
  //fseek(pf,40,SEEK_SET);//将pf移到第40个字节的位置
  
  //假设文件存储是下面内容
  //23D445AEAABBCCDDEEFF112233445566778899A1B2C3D4E5F655443333117723D445AEAABBCCDDEEFF112233445566
 
  //如果使用fread将信息读入temp,那么应取出8个字符从当4个字节.例如
  //23D445AE,这样还得写个算法将他们转换成十进制
  fread(temp,sizeof(char),44,pf);//将pf的1到40字节给temp
  printf("fread读入效果\n");
  for(j=0;j<44;j+=8)
  {   sscanf(&temp[j],"%8x",&i);
      printf("%x\n",i);//十六进制显示
  }
  printf("\n");
  
  
  // i=*(long*)((temp[0]<<24)+(temp[1]<<26)+(temp[2]<<8)+temp[3]); 
 
  fseek(pf,0,SEEK_SET);//将pf移到第1个字节的位置

  //如果仅仅处理数据,用fscanf()直接按8位宽度读入就行,这样自动转成十六进制数值
  //宽度可以自行处理.
  printf("fscanf读入效果\n");
  while(fscanf(pf,"%8x",&i)!=EOF)
  {
  printf("%x\n",i);//十六进制显示
  }
  //printf("%x\n",i);//十进制显示
 }  
 else
 {printf("\n文件打开错误");}
 fclose(pf);
}

板凳

我看看


















http://www.shwhjiaju.com

我来回复

您尚未登录,请登录后再回复。点此登录或注册