例如我想将'中国人民'转换成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 这是为什么呢?

解决方案 »

  1.   

    ORD的作用到底是什么呢?是不是转国标码的函数呢?如果是,为什么结果却不对呢?正确的结果我是从超级编辑器中得到的.
      

  2.   

    晕,不要用WideString。改成:function Conv(Name: string): string;
    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。
      

  3.   

    ord是用来取有序类型的一个值在该类型中的序号用的,对于一个普通的字符来说,ord(char)就是取得它的ASCII码。