坦白的说,好烂好烂的代码呀:)Encoding enc = System.Text.Encoding.Default;
byte[] ascChars = enc.GetBytes(as_password.Trim());
for( int i = 0; i < ascChars.Length; i ++ )
    ascChars[i] -= 10;
return new string( enc.GetChars( ascChars ) );

解决方案 »

  1.   

    string ls_status,ls_return;
    string ls_password,ls_word;
    long li_len,i;
    ls_password="";
    li_len = as_password.Trim().Length;
    byte[] ch = new byte[1];for(int i=1;i<=li_len){
        ls_word = as_password.Trim().SubString(i,1);
        ch = System.Text.Encoding.Default.GetBytes(ls_word);
        ls_word=string(ch[0]-'\0'-10);
        ls_password=ls_password + ls_word;
    }return ls_password;
      

  2.   

    方枪枪,不要想当然好不好。你的代码编译根本就不会通过嘛;就算编过了结果也不对嘛。

    byte[] ch = new byte[1];   // 不用new的,又给GC找麻烦。还好是C#,不然又leak了1bytefor(int i=1;i<=li_len){  //老大,语法错
        ls_word = as_password.Trim().SubString(i,1);  // base index是1!
        ch = System.Text.Encoding.Default.GetBytes(ls_word); 
        ls_word=string(ch[0]-'\0'-10); //String有参数为byte的构造函数吗?!
        ls_password=ls_password + ls_word; 
    }还有每个for循环居然要调4次String 的构造函数,一次Array的构造,GC真是活活被你累死。