• 全部
  • 问答

如何读取文件的ascii码?

congliu 2004-07-29 04:46:04
例如:用winhex打开文件,得到内容是4c 55。请问如何在c++中读取4c 55????
谢谢
...全文
228 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
antijpn 2004-07-29
怎么可能呢?ASCII的4c还是整型的4c,连转换都不需要,直接赋值给int完全是可以的

就算你不想转换
printf("%x",ch);也可以让它输出为十六进制的数值
回复
congliu 2004-07-29
已经解决了,谢谢大侠们
回复
congliu 2004-07-29
请问antijpn(antijpn) :按照你的方法,只能读到被视为ascii码的“4c”,而不能读出16进制的“4c”,请指点,谢谢
回复
antijpn 2004-07-29
extern unsigned char buffer[];
extern int iarray[];
extern size_t USize;
extern size_t UCount;
FILE* fp=fopen("file","rb");
int ByteRead=fread(buffer,USize,UCount,fp);
for(int i=0;i<ByteRead;i++)
iarray[i]=buffer[i];

这样就可以了,iarray里面就是你需要的数值,只不过输出的时候需要指定十六进制的输出才行
回复
congliu 2004-07-29
不是这样赋值,是从文件中读取16进制4c到int变量
回复
improgrammer 2004-07-29
把4C赋给int变量吗?你看:
int v=0x4c;
回复
junguo 2004-07-29
其实文件中的内容只是一种格式,说到底都是0,1。对于一个字节,你直接转换就好了!
回复
congliu 2004-07-29
请问improgrammer(无忌),如何用把4c赋值到int对象中??????
回复
antijpn 2004-07-29
unsigned char[]里面存放的就是你读取得数值,需要使用的时候可以采用printf或者其他格式输出函数输出
回复
junguo 2004-07-29
其实winhex的原理是把文件打开,然后按字节把文件转化成16进制数,再显示在页面上。
c++当然可以!
建议看看汇编的资料,能更好理解这个问题!
回复
improgrammer 2004-07-29
读取的是字节,4C 55 之类只是显示的问题。你把读得的每个字节以HEX码形式显示出来,并且按8个字节一组,每个字节固定宽度2个字符,每行列出16个字节的HEX码,就得到了WINHEX的模样。
void disp(FILE *fp)
{
int ch;
int i=0;
while((ch=fgetc(fp))!=EOF)
{
printf("%02X",ch);
++i;
if((i & 0xF)==0)
printf("\n");
else if((i & 0x7)==0)
printf(" ");
}
}
回复
antijpn 2004-07-29
打开文件的时候加入b参数
譬如这样
FILE *fp=fopen("file","br");
然后使用fread读取到一个unsigned char[]就可以了,小心不要读太多,会越界的
回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2004-07-29 04:46
社区公告
暂无公告