我已经知道如果
 r:='5475'  //5475 是 中文"呵" 的Unicode值
 //16进制的75,十进制为117
 //16进制的54,十进制为84
 
 //如果执行下面语句
 result=WideChar('$'+'75'+'54')  
 ' result 结果为"呵" 事实上,"呵"字的 前一字节的ASC值186($BA) ,后一字节的ASC值199($C7) 现在,我如果想不用上面的widechar(),而是直接用某种算法,把 5475转换为 BAC7
 有没有这样的算法呢? 我要的是纯计算法,不可以用widechar()之类的函数。
 有人知道如何解决吗?

解决方案 »

  1.   

    这个是什么? Delphi的函数吗? 我都说不要函数,自己写算法啦,不过谢谢您
      

  2.   

    如果可以用,当然用啦。我在用一种叫 Nsbasic的语言,这些便利的函数,WideString方式统统不可以用,而查表法太慢。
      

  3.   

    D:\Program Files\Borland\Delphi6\Demos\FastNet\Url
    D:\Program Files\Borland\Delphi6\Demos\FastNet\Uue
    看看这两个例子
      

  4.   

    function UcToAsc(UcStr:String):String;
    var
      i:Integer;
    begin
      if Length(UcStr)=4 then
      begin
        Result:=IntToHex(Ord(String(WideChar(StrToIntDef('$'+UcStr,0)))[1]),2)+IntToHex(Ord(String(WideChar(StrToIntDef('$'+UcStr,0)))[2]),2);
      end;
    end;WideChar是种数据类型,不是你说的函数,这里调用就是强制类型转化!
      

  5.   

    我实际使用的并不是Delphi,而是一种类似BASIC的语言,而这种语言很低级,没有一些需要的函数.
    我是想能否根据已知的Unicode码例如"6C49",计算出它对应的GB码"BABA" 
    有了 "BABA",我就可以用chr(186)+chr(186)得到汉字"汉"了,但是,这里我只知道6C49这么个Unicode,除了查表法外,能否有一个算法可以把6C49算出来到BABA呢? 利用语言优势的类型转换,对我是没有用的.
    我也知道这个问题在这里问不太合适,可我又不知道该到哪里问,想想高手们大概做过类似的事情,就到这里来了
      

  6.   

    不大可能,除非你对着GBK字符集一个个的算!只有用API