例如我想将'中国人民'转换成D6 D0 B9 FA C8 CB C3 F1 这8个字节,我用的是ord的方法,程序如下:
Function TFrmKQJ.CCTOCSC(name:string):string;
var
t:widestring;
i:integer;
h,l:byte;
cscstr:string;
begin
t:=widestring(name);
cscstr:='';
for i:=1 to length(t) do
begin
h:=hi(ord(t[i]));
l:=lo(ord(t[i]));
cscstr:=cscstr+inttohex(h,2)+inttohex(l,2);
end;
result:=cscstr;
end;
利用此函数得到的结果却是:4E 2D 56 FD 4E BA 6C 11 而不是 D6 D0 B9 FA C8 CB C3 F1 这是为什么呢?
Function TFrmKQJ.CCTOCSC(name:string):string;
var
t:widestring;
i:integer;
h,l:byte;
cscstr:string;
begin
t:=widestring(name);
cscstr:='';
for i:=1 to length(t) do
begin
h:=hi(ord(t[i]));
l:=lo(ord(t[i]));
cscstr:=cscstr+inttohex(h,2)+inttohex(l,2);
end;
result:=cscstr;
end;
利用此函数得到的结果却是:4E 2D 56 FD 4E BA 6C 11 而不是 D6 D0 B9 FA C8 CB C3 F1 这是为什么呢?
var
Count0 : integer;
begin
Result := '';
if length(Name) > 0 then
for Count0 := 1 to length(Name) do
Result := Result + inttohex(ord(Name[Count0]), 2) + ' ';
end;顺便说一句,这不是国标码,只是汉字的ASCII码而已。要得到国标码,还要在得到的每个字节上减去$A0。