如何将汉字变成rtf的编码格式 ( 积分: 100 )

  • 主题发起人 主题发起人 wangzequn
  • 开始时间 开始时间
W

wangzequn

Unregistered / Unconfirmed
GUEST, unregistred user!
比如怎么样将"中国"变成如/'d6/'d0/'b9/'fa
 
procedure TForm1.Button1Click(Sender: TObject);
var
s,temp: string;
i: integer;
begin
s:='中国';
Memo1.Lines.Clear;
temp:='';
for I := 1 to length(s) do
begin
temp:=temp+'/'''+inttohex(ord(s),2);
end;
Memo1.Lines.Add(temp);
end;
 
//辅助函数
procedure FastHexWrite(const S:Char;PDest:PChar);
var
m:Byte;
begin //将字符的Hex形式写入指定地址
m:=Byte(S) shr 4; //高4位
if m<10 then
Byte(PDest^):=m+Byte('0')
else
Byte(PDest^):=m+Byte('A')-10;
m:=Byte(S) and $0F; //低4位
if m<10 then
Byte((PDest+1)^):=m+Byte('0')
else
Byte((PDest+1)^):=m+Byte('A')-10;
end;

//转换代码
var
i,n:Word;
str,AimStr:string;
pc0,pc:PChar;
begin
str:='中国';
n:=Length(str);
SetLength(AimStr,n*4); //2 Hex + "/'"
pc0:=@str[1];
pc:=@AimStr[1];
for i:=1 to n do
begin
pc^:='/'; Inc(pc);
pc^:=''''; Inc(pc);
FastHexWrite(pc0^,pc);
Inc(pc,2);
Inc(pc0);
end;
//Now AimStr is /'d6/'d0/'b9/'fa
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
923
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部