- 论坛徽章:
- 0
|
我搜索了很多16进制的文章可是没我需要的。
我问题是一个有16进制数据组成的文件,内容如下:
(都是16进制度,用OD看的)
bd15 02c7 6f01 1820 0c01 1718 113b 0c01
0019 0100 002c 0000 0000 5831 6f01 ffff
ffff ffff 0000 6f98 ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff 0032
0a39 13f8 0f90 0000 0000 0000 0000 010
例如02c7bd15(16进)-----(10进)46644501
问题:
1。我该如何正确的读到文件里的数值.用过fread,读到一个BUFF中,截取都四个字节,用strtol,去无法正确显示,(redhat9。0 有 longlong 型吗?<c99>)
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #define telllist "2001122500.BIL"
- #define maxlen 1024*1024*8
- main()
- {
- FILE *fp;
- char *buff=malloc(maxlen);
- char listtell[118+1];
- char temp[118+1];
- char tep_no[4];
- long No;
- memset(temp,'\0',sizeof(temp));
- memset(tep_no,'\0',sizeof(tep_no));
- fp=fopen(telllist,"rb");
- fread(buff,maxlen,1,fp);
- fclose(fp);
- strncpy(temp,buff,118);
- strncpy(tep_no,temp,4);
-
- printf("%d\n",atoi(tep_no));
- //这里显示却为0,如果正确02c7bd15(16进)-----(10进)46644501
- 实在苦恼,以前没遇到过
- }
复制代码
[ 本帖最后由 roster 于 2005-12-20 10:38 编辑 ] |
|