const string sNil = "'(&.&!'%&$\"'&)\" \",&)$(%#$-$#$$\" "; //'''(&.&!''%&$"''&)" ",&)$(%#$-$#$$" ' ; const string sTemp = " !\"#$%&'()*+,-./"; // ' !"#$%&''()*+,-./'; /// <summary> /// /// </summary> /// <param name="xUserID"></param> /// <returns></returns> public static string EncodeUserID(string xUserID) { char[] sUserID = xUserID.ToCharArray(); string sResult = sNil.Substring((sUserID.Length - 1) * 2, 30 - (sUserID.Length - 1) * 2); //DS-〉&.&!'%&$\"'&)\" \",&)$(%#$- int k = 0, j = 0, l = 0; for (int i = sUserID.Length - 1; i >= 0; i--) { l = Convert.ToInt32(sUserID[i]); k = (l - 32) % 16; j = ((l - 32) / 16) + 1; sResult = sResult + Convert.ToChar(32 + j + 1) + sTemp[k]; } return sResult; } /// <summary> /// /// </summary> /// <param name="xUserID"></param> /// <returns></returns> public static string DecodeUserID(string xUserID) { string resultStr = string.Empty, sResult = string.Empty; for (var i = xUserID.Length - 1; i >= 0; ) { int x = sTemp.IndexOf(xUserID[i]); int y = Convert.ToInt32(xUserID[i - 1]) - 33; int l = ((y - 1) * 16) + 32 + x; resultStr += Convert.ToChar(l); sResult = sNil.Substring((resultStr.Length - 1) * 2, 30 - (resultStr.Length - 1) * 2); string tmpStr = xUserID.Substring(0, i - 1); if (sResult == tmpStr) { break; } i -= 2; } return resultStr; }