可以啊,你看到的ü是字符形式,你直接用整数形式来读取就可以了啊char a, b, c; a = 30; b = 0x80; c = 0x81; CString str; str.Format("a = %c, b = %c, c = %c", a, b, c);//以字符形式输出 afxMessageBox(str); //这个时候你只会看到a b,c都是乱码。 但是你这样输出: str.Format("a = %d, b = %d, c = %d", a, b, c);//以10进制整数输出 afxMessageBox(str); //这个时候看到的就是a,b,c对应的值的10进制显示 str.Format("a = %x, b = %x, c = %x", a, b, c);//以16进制输出 afxMessageBox(str); //这个时候看到的就是a,b,c对应的值的16进制显示
都不好意思继续问了,不知道你们能不能看到图片,上面我贴的数据: 0 k 0 m 0 o 0 q 0 s 0 u 0 w 0 y 0 { 0 } 0 0 ? 最后一行的“?”不是真正的问号,不是十六进制3F,而应该是十六进制81,但是显示为“?”问号。那个TXT中后面还有很多,凡是“?”问号,它都认为是十六进制3F。 TXT中有很多.......,其实不是黑点,但是一些其他的字符,比如NUL和SOH,都显示为黑点,但是这个就能正确地反映出来,0 和1。 TXT中还有乱七八糟的汉字,也都能正确地显示
#include <stdlib.h>
#include <string.h>main()
{
FILE *fp;
long flen,bint[500],i;
fp = fopen("c:\\a.txt", "rb");
fseek(fp,0,SEEK_END);
flen=ftell(fp);
fseek(fp,0,SEEK_SET);
unsigned char *p,*s; //定义无符号字符型变量指针,希望能从0-255读出ascii码
p=(unsigned char*)malloc((flen+1)*sizeof(unsigned char));
fread(p,1,flen,fp);
for(i=0;i<flen;i++)
{
if(*(p+i)==' ') //遇到空格认为是空NULL
*(p+i)=0;
printf("%x ",*(p+i));
}
printf("\n\n");
for(i=0;i<flen;i++)
{
printf("%c",*(p+i));
}
printf("\n\n");
for(i=0;i<flen;i++)
{
bint[i]= (long)(*(p+i));
printf("%d ",bint[i]);
}
}
可以啊,你看到的ü是字符形式,你直接用整数形式来读取就可以了啊char a, b, c;
a = 30;
b = 0x80;
c = 0x81;
CString str;
str.Format("a = %c, b = %c, c = %c", a, b, c);//以字符形式输出
afxMessageBox(str);
//这个时候你只会看到a b,c都是乱码。
但是你这样输出:
str.Format("a = %d, b = %d, c = %d", a, b, c);//以10进制整数输出
afxMessageBox(str);
//这个时候看到的就是a,b,c对应的值的10进制显示
str.Format("a = %x, b = %x, c = %x", a, b, c);//以16进制输出
afxMessageBox(str);
//这个时候看到的就是a,b,c对应的值的16进制显示
0 m
0 o
0 q
0 s
0 u
0 w
0 y
0 {
0
}
0
0 ?
这些字符中00-7F的都可以读出
你以unsigned char的方式来读取,然后你转换为16进制,然后转换为字符串,代码如下
#include "stdafx.h"#include <stdio.h>
#include <stdlib.h>
#include <string.h> main()
{
FILE *fp;
long flen,bint[500],i;
fp = fopen("c:\\bsmain_runtime.log", "rb");
fseek(fp,0,SEEK_END);
flen=ftell(fp);
fseek(fp,0,SEEK_SET);
unsigned char *p,*s; //????????????,????0-255??ascii?
p=(unsigned char*)malloc((flen+1)*sizeof(unsigned char));
fread(p,1,flen,fp);
for(i=0;i <flen;i++)
{
printf("%x\t",*(p+i)); //??????
}
printf("\n\n");
for(i=0;i <flen;i++)
{
bint[i]= (long)(*(p+i));
printf("%d ",bint[i]);
}
}
我都帮你运行过了
{
FILE* fp;
unsigned char a = 129; fp = fopen("test.txt" , "wb");
fwrite(&a , sizeof(unsigned char) , 1 , fp);
fclose(fp); fp = fopen("test.txt" , "rb");
fread(&a , sizeof(unsigned char) , 1 , fp);
fclose(fp); printf("%d\n" , (int)a); return 0;
}看看这个能不能帮助你
都不好意思继续问了,不知道你们能不能看到图片,上面我贴的数据:
0 k
0 m
0 o
0 q
0 s
0 u
0 w
0 y
0 {
0
}
0
0 ?
最后一行的“?”不是真正的问号,不是十六进制3F,而应该是十六进制81,但是显示为“?”问号。那个TXT中后面还有很多,凡是“?”问号,它都认为是十六进制3F。 TXT中有很多.......,其实不是黑点,但是一些其他的字符,比如NUL和SOH,都显示为黑点,但是这个就能正确地反映出来,0 和1。 TXT中还有乱七八糟的汉字,也都能正确地显示