主题:C语言将十六进制转换为十进制的原理和程序
whoAzzh
[专家分:0] 发布于 2011-05-18 22:14:00
诚心求!最好加以解释,真的有点难以编写此程序,谢谢
回复列表 (共2个回复)
沙发
xiaoseyihe [专家分:0] 发布于 2011-05-19 10:12:00
#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);
}
板凳
wyk335858575 [专家分:30] 发布于 2011-05-19 14:59:00
我看看
http://www.shwhjiaju.com
我来回复