|
作者: ypy [ypy] 见习版主 | 登录 |
我想在BCB中实现把文本文件中的内容转换成16进制ASCII码,代码中一部分如下: pszBuffer=new char[iFileLength+1]; //读取文件内容 iBytesRead=FileRead(iFileHandle,pszBuffer,iFileLength); FileClose(iFileHandle); //转换成16进制ASCII码 for(j=0;j<iBytesRead;j++) { sprintf(hexchar,"%02x",int(pszBuffer[j])); hexBuffer+=AnsiString(hexchar).UpperCase(); } delete []pszBuffer; iFileHandle=FileCreate(ListBox1->Items->Strings[i]); iFileLength=hexBuffer.Length()+100; //把16进制ASCII码写入文件 FileWrite(iFileHandle,hexBuffer.c_str(),iFileLength); FileClose(iFileHandle); 其中前面的iFileHandle为读入内容的文件句柄,文件长度iFileLength值已定。 几个变量的声明: int i; int j; int iFileHandle; int iFileLength; int iBytesRead; char *pszBuffer; AnsiString hexBuffer; char hexchar[4]; 头文件包括: #include <SysUtils.hpp> #include <stdio.h> 请教:为什么对文件中的中文不能正确处理,我该怎么改才正确? 谢谢了各位! [此贴被 ypy(ypy) 在 03月22日23时41分 编辑过] [此贴被 ypy(ypy) 在 03月22日23时44分 编辑过] |
地主 发表时间: 2003-03-22 23:16:44 |
回复: ypy [ypy] 见习版主 | 登录 |
同志们请帮帮忙啊 |
B1层 发表时间: 03/23 22:40 |
回复: ricky [ricky] 版主 | 登录 |
你把char的buffer定义成unsigned char 试试 |
B2层 发表时间: 03/24 08:46 |
回复: ypy [ypy] 见习版主 | 登录 |
和尚 我记得中文要分为两个部分高字节和低字节处理,可是不知道具体怎么做 |
B3层 发表时间: 03/24 15:17 |
回复: sainthero [sainthero] 论坛用户 | 登录 |
var str,temp: string; i: integer; begin str := '我爱你中国'; temp := ''; for i := 0 to length(str)-1 do begin temp := temp + inttohex(byte(str[i]),2);; end; showmessage(temp); end; delphi的例子,应该和bcb差不多,另外bcb里面在fastnet面板有这样的控件可以转化 |
B4层 发表时间: 04/01 23:16 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号