C# 字符串转ASCII码的问题,以及一些扩展(加密字符串、解密字符串)
1、不多说,直接上代码,下面是string单字符转ASCII码
public int Asc(string character) { if (character.Length == 1) { System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding(); int intAsciiCode = (int)asciiEncoding.GetBytes(character)[0]; return (intAsciiCode); } else { throw new Exception("Character is not valid."); } }
2、ASCII码转string
public string Chr(int asciiCode) { if (asciiCode >= 0 && asciiCode <= 255) { System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding(); byte[] byteArray = new byte[] { (byte)asciiCode }; string strCharacter = asciiEncoding.GetString(byteArray); return (strCharacter); } else { throw new Exception("ASCII Code is not valid."); } }
3、加密方法
/// <summary> /// 字符串加密 /// </summary> /// <param name="str"></param> /// <returns></returns> public string passscript(string str) { string lsstr1 = ""; string lsstr; int k; if (str == "") { return str; } for (int i = 1; i < str.Length+1; i++) { lsstr = str.Substring(i - 1, 1); k = asi.Asc(lsstr); if (i % 2 == 0) { k = k + i - 32; } else { k = k - i + 8; } lsstr1 = lsstr1 + asi.Chr(k); } return lsstr1; }
4、解密方法
/// <summary> /// 字符串解密 /// </summary> /// <param name="str"></param> /// <returns></returns> public string descript(string str) { string lsstr1 = ""; string lsstr; int k; if (str == "") { return str; } for (int i = 1; i < str.Length+1; i++) { lsstr = str.Substring(i - 1, 1); k = asi.Asc(lsstr); if (i % 2 == 0) { k = k - i + 32; } else { k = k + i - 8; } lsstr1 = lsstr1 + asi.Chr(k); } return lsstr1; }
5、上述3、4 中使用到的相关内容
需要先实例化对象,类文件:Ascii.zip
//ASCII转string,与string转ASCII对象,实例化 Ascii asi = new Ascii();
因循环参数i必须从1开始,故单字符取得方法
str.Substring(i - 1, 1)
循环总数因如上原因也需这样
str.Length+1
以上加密与解密适合TJ系列HIS系统的加密与解密。
相关程序代码: