string result = string.Empty;
foreach (char ch in txt)
{
result += Convert.ToString((int)ch, 10);
}
我有这个代码,如何将其恢复为普通字符串?
答案 0 :(得分:2)
除非您100%确定txt
中的所有字符都在0-9,10-99,100-999等范围内,否则无法实现(即:字符串表示形式)每个字符的整数值都有一个固定的长度)
由于您没有将它们分开,因此结果不明确
根据评论,您需要进行一些加密和解密。这是一种非常弱加密方法,我不建议您这样做,但添加分隔符可以帮助您执行此操作:
public static string Encode(string txt)
{
string result = string.Empty;
foreach (char ch in txt)
{
// "tku" will be our delimiter
result += Convert.ToString((int)ch, 10) + "tku";;
}
result = result.Replace("0", "dos");
result = result.Replace("1", "vso");
result = result.Replace("2", "otw");
result = result.Replace("3", "foa");
result = result.Replace("4", "bae");
result = result.Replace("5", "xgd");
result = result.Replace("6", "ymt");
result = result.Replace("7", "ksx");
result = result.Replace("8", "wte");
result = result.Replace("9", "rom");
Console.WriteLine(result);
return result;
}
public static string Decode(string txt)
{
string result = txt;
result = result.Replace("dos", "0");
result = result.Replace("vso", "1");
result = result.Replace("otw", "2");
result = result.Replace("foa", "3");
result = result.Replace("bae", "4");
result = result.Replace("xgd", "5");
result = result.Replace("ymt", "6");
result = result.Replace("ksx", "7");
result = result.Replace("wte", "8");
result = result.Replace("rom", "9");
// "tku" will be converted to spaces
result = result.Replace("tku", " ");
string result2 = string.Empty;
// and we split over them
foreach(var res in result.Split(' '))
{
if(!String.IsNullOrWhiteSpace(res))
{
result2 += ((char)Int32.Parse(res)).ToString();
}
}
return result2;
}
我做了一个小提琴here:https://dotnetfiddle.net/zV9zYw
同样,我强烈建议您不要这样做,只需告诉您它是如何工作的。我没有对代码进行优化或尝试使代码更好。
此加密非常弱,并且在.NET框架中内置了很好的双向编码引擎。
PS:对于读者来说,代码来自OP的评论pasted here