这样把汉字转成的十六进制如何转回来??

erduo 2003-10-18 02:55:12
for i := 1 to Length(Edit1.Text) do
begin
Label1.Caption := Label1.Caption + IntToHex(ord(Edit1.Text[i]),2);
end;


如上把汉字转成的十六进制如何转回汉字来??
...全文
186 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
micher_yan 2003-10-28
  • 打赏
  • 举报
回复
应加上非汉字的判断,如16进制大于127的才是汉字,即当发现大于127时当双字节处理,否则为单字节除了
aiirii 2003-10-28
  • 打赏
  • 举报
回复
var i: integer;
s1, s2: string;
begin
s1 := label1.Caption;
for I:= 1 to Length(s1) div 2 do
begin
s2 := s2 + Chr(StrToInt('$' + s1[i*2-1]+s1[i*2]));
end;
label2.Caption := s2;
end;

以上測試沒問題, 但代碼沒整理, 有點亂, 別介意!!!
erduo 2003-10-28
  • 打赏
  • 举报
回复
没有一个回答问题,我的40分岂不白丢了?!
erduo 2003-10-28
  • 打赏
  • 举报
回复
何时才能如你们一般啊?!
micher_yan 2003-10-28
  • 打赏
  • 举报
回复
当汉字中有单字节字符时会出错
procedure TForm1.Button1Click(Sender: TObject);
var
s,s2,s3 : string;
i : Integer;
p : PChar;
begin
s:= Edit1.Text;
s2:= '';
for i:=0 to Length(s)-1 do
begin
s2:= s2+IntToHex(Ord(s[i+1]),2);
end;
edit2.Text:= s2;
setlength(s3,Length(s2) div 2);
p:= @s3[1];
//s3:= '';
for i:=0 to Length(s3)-1 do
//s3 := s3 + Chr(StrToInt('$' + s2[i*2-1]+s2[i*2]));
pbyte(integer(p)+i)^:=strtoint('$'+s2[i*2+1]+s2[i*2+2]);
edit3.Text:= s3;
end;
以上函数使用指针操作,避开了判断单/双字节

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧