AllChar:string='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ';后面有个空格?

解决方案 »

  1.   

    AllChar:string 算法没问题吧 allchar没有使用的地方
      

  2.   

    是,delphi7中char是单字节,c#是unicode的,你都改用byte试试
      

  3.   

    都改用byte?麻烦指教下,我C#不是很懂,都是依样画葫芦的,谢谢
      

  4.   

    c#改成如下        public string Enc(string sInput)
            {
                string AllChar = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
                string sOutput;
                byte iPin;
                Boolean A;
                int len = 0;
                Int32 K = 0;
                sOutput = "";
                byte[] bs = Encoding.Default.GetBytes(sInput);
                byte[] outbs = new byte[bs.Length];
                if (sInput == "") sOutput = "";
                else
                {
                    A = false;
                    len = bs.Length;
                    if (len % 2 == 1)
                    {
                        A = true;
                        sInput = sInput + "_";
                    }
                    for (iPin = 0; iPin < len; iPin++)
                    {
                        outbs[iPin] = (byte)(Convert.ToInt32(bs[iPin]) + 128);
                    }
                }
                sOutput = Encoding.Default.GetString(outbs);
                return sOutput;
            }
      

  5.   

    +1一个汉字在delphi里的length为2,在C#里的长度为1
    代码再小改一下        public string Enc(string sInput)
            {
                string AllChar = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
                string sOutput;
                byte iPin;
                Boolean A;
                int len = 0;
                Int32 K = 0;
                sOutput = "";
                byte[] bs = Encoding.Default.GetBytes(sInput);
                byte[] outbs = new byte[bs.Length];
                if (sInput == "") sOutput = "";
                else
                {
                    A = false;
                    len = bs.Length;
                    if (len % 2 == 1)
                    {
                        A = true;
                        sInput = sInput + "_";
                        bs = Encoding.Default.GetBytes(sInput);
                        len = bs.Length;
                    }                for (iPin = 0; iPin < len; iPin++)
                    {
                        outbs[iPin] = (byte)(Convert.ToInt32(bs[iPin]) + 128);
                    }
                }
                sOutput = Encoding.Default.GetString(outbs);
                return sOutput;
            }