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

门外的码农 2011-12-17 10:59:51
以下是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#解码代码,如果传入参数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();


求高手指点!,先谢了
...全文
332 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
门外的码农 2011-12-22
  • 打赏
  • 举报
回复
自己搞定了
门外的码农 2011-12-20
  • 打赏
  • 举报
回复
我估计是涉及到编码问题
灰色轨迹 2011-12-18
  • 打赏
  • 举报
回复
在C#里不是一个汉字占两个字节吗?你在PB里都是通过字符串长度进行循环的,而你在c#里是通过字节进行循环的,这样貌似不行~

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧