以下是引用zuifei07在2014-3-1 22:13:16的发言:
看不明白什么意思。。。求解释原理。。
source %2+0x30;
dec2yyy(ch & 0xff ,&buf[0]);
这两句。。。第一个后面的+0x30是什么意思?
第二个的ch & 0xff 呢?
还有歌问题。。
我自己写的这个。。查看十六进制的。。
#include"stdio.h"
void main(void)
{
FILE *fp;
char str[64],str2[128];
fp=fopen("NOTEPAD.EXE","rb");
fread(str,sizeof(char),64,fp);
printf("\n#######%s\n## 十进制有符号##%d\n",str,str);
printf("\n#######%s\n## 十进制无符号###%i\n",str,str);
printf("\n#######%s\n## 八进制无符号###%o\n",str,str);
printf("\n#######%s\n## 十六进制小写###%x\n",str,str);
getchar();
sprintf(str2,"%x",str);
printf("str2的值是:%s",str2);
getchar();
}
为什么输出转换后的值还原后不和读取的字符内容一样呢?
我简单的写了一个DEMO 你看一下 你的处理方式不对看不明白什么意思。。。求解释原理。。
source %2+0x30;
dec2yyy(ch & 0xff ,&buf[0]);
这两句。。。第一个后面的+0x30是什么意思?
第二个的ch & 0xff 呢?
还有歌问题。。
我自己写的这个。。查看十六进制的。。
#include"stdio.h"
void main(void)
{
FILE *fp;
char str[64],str2[128];
fp=fopen("NOTEPAD.EXE","rb");
fread(str,sizeof(char),64,fp);
printf("\n#######%s\n## 十进制有符号##%d\n",str,str);
printf("\n#######%s\n## 十进制无符号###%i\n",str,str);
printf("\n#######%s\n## 八进制无符号###%o\n",str,str);
printf("\n#######%s\n## 十六进制小写###%x\n",str,str);
getchar();
sprintf(str2,"%x",str);
printf("str2的值是:%s",str2);
getchar();
}
为什么输出转换后的值还原后不和读取的字符内容一样呢?
程序代码:
#include <stdio.h> int main() { FILE *fp; char str[64]={'\0'}; fp=fopen("notepad.exe","rb"); fread(str,sizeof(char),64,fp); int j=0; for(int i=0;i<64;i++) { printf(" %02X ",str[i] & 0xff); j++; if(j==8) { j=0;printf("\n"); } } fclose(fp); return 0; }
[ 本帖最后由 wp231957 于 2014-3-1 22:48 编辑 ]
DO IT YOURSELF !