+ -
当前位置:首页 → 问答吧 → PB代码转换成C#代码,求高手指点

PB代码转换成C#代码,求高手指点

时间:2011-12-17

来源:互联网

C# code

以下是PB9的代码
///////////////////////////////////////////////////////////////////
// 加密
// 传入参数 string str_password
///////////////////////////////////////////////////////////////////
int i,intLen
int intN
string strP
string strPass
intN = 20            
strP = upper(str_password)
intLen = len(strP)
if intLen < intN then 
        strP = strP + space(intLen)
end if
strPass = ''
for i = 1 to intN
    strPass = strPass + char(asc(mid(strP,i,1))+1) // 将字符转换成ASCII加1,然后再转成字符
next 
return strPass

////////////////////////////////////////////////////////////////
// 解密
// 传入参数:string sPassWord
///////////////////////////////////////////////////////////////////
string sOldPass
integer i
sOldPass=''

for i=1 to 20 
     sOldPass = sOldPass+char(asc(upper(mid(sPassWord,i,1)))-1)
next
return sOldPass




求翻译成C#代码 
(PB9程序是采用单字节编码的一个中文汉字的的宽度为2,原PB代码中,如果密码是中文,可以正常加、解密,但本人所写的C#代码就无法达到同样效果)

C# code

// 这是C#解码代码,如果传入参数s为中文,结果就是错的
StringBuilder sPassWord = new StringBuilder();
            ASCIIEncoding ascii = new ASCIIEncoding();
            Byte[] encodedBytes = ascii.GetBytes(s.Trim ());
            int i=0;
            foreach (Byte b in encodedBytes)
            {
                i++;
                sPassWord.Append((char)(b - 1));
                if (i >= 20)
                    break;
            }
            sPassWord.Replace("\0", "");
            return sPassWord.ToString();




求高手指点!,先谢了

作者: superlsf   发布时间: 2011-12-17