现在有2个ASCII,值分别是126,134和56
我要转换成char后组成字符串,用chr(126)+chr(134)+chr(56),结果是最后一个没了,只有两个字符;
改成WChar强制转化后,134对应的字符变成?,再转译成ascii的时候成了?对应的ascii。有没有好办法?谢谢!

解决方案 »

  1.   

    Chr(126) + ' ' + chr(134) + ' ' + chr(56)
      

  2.   

     一個char  只是一字節你放三個字符進去怎麼行呢??
      

  3.   

    问题出在chr(134),他不象那两个能直接转成字符 ,因为134已经超出了ASCII的编码范围
    chr(126)='~'
    chr(56)='8'
    chr(134)=#134
    单独处理一下134,或者把134放在最后
      

  4.   

    ASCII码中,第0~32号及第127号是控制字符,常用的有LF(换行)、CR(回车);第33~126号是字符 ,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母 ,其余的是一些标点符号、运算符号等。
      

  5.   


    是3个char强制转化成WChar后放在string内
      

  6.   

    chr处理的是0-127范围内的东西.超出这个范围,要另作处理.否则不正确
    汉字的编码都超出128,得另行处理
      

  7.   

    大于127的,用一个edit去显示,然后去edit的值吧,办法虽然恶心了点,但可行
      

  8.   


    多谢
    不过edit需要设置什么字符集吗?我试了好像还是不行呢?
      

  9.   

    很明显后面一个字符是汉字,上面诸位的办法都无法解决这个问题,
    只能用以下办法才能正确显示:示例代码:var
      i:integer;
      ss:string;
    begin
      i:=134*256+56;
      ss:=widechar(i);
      edit1.Text:=chr(126)+ss;
    end;其中最关键的是要用widechar这个函数
      

  10.   

    不用,我用edit显示chr(134)可以显示'?'
      

  11.   

    上面两位的方法我都试了,都能显示?,但是我用二进制编辑器看加密后的内容,?对应的asc变成了3Fdelphi就这么笨吗?
      

  12.   

    两个?是不一样的,134的?不是ASCII表中的,他应该和另一个ASCII组成汉字的,134是一个非常规的?
      

  13.   


    我明白,在扩展ASCII中,134是一个特殊字符
    但是Delphi好像不能处理这些扩展ASCII,一旦我们把134转换成?后,delphi写到别的地方就认为是?的实际ASCII:3F(63)
      

  14.   

    关键问题是,我加密后,在Delphi中即使能看到我要的内容,比如“~?8”,但是我写到一个文件中的时候,比如XML中
    然后用二进制编辑器打开XML文件看,?位置对应的是3F,这就不对了
      

  15.   

    解决了,我忘了用WideString保存了
    谢谢各位