论坛: 原创软件 标题: 熟悉BCB编程的朋友请帮忙 复制本贴地址    
作者: 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号