例如,将“hashdkjhs654asdkjlsdakjhakjhkkajdssdsa”设为“Gf5i”
我试过这种方式但是失败了。
private void encodeToolStripMenuItem_Click(object sender, EventArgs e)
{
UTF8Encoding utf8 = new UTF8Encoding();
string textstring;
string encodedString;
textstring = richTextBox1.Text;
byte[] encodedBytes = utf8.GetBytes(textstring);
richTextBox1.Clear();
encodedBytes.ToString(encodedString);
richTextBox1.Text = encodedString;
}
答案 0 :(得分:1)
你想要做的是编写一个压缩字符串的算法。然而,这不是你可以通过掰手指而做的事情。
您首先应该考虑您正在接收的原始输入类型:它是人文易于理解的文本吗?然后我的建议是使用模式搜索算法,该算法寻找重复的字符序列并标记它们的位置,而不是从那一点开始使用它们的坐标。这就是大多数文件压缩算法,如WinRar,主要做的。要对您进行解码,然后迭代压缩的字符串,查找坐标标题并使用它们重新整合整个事物。
编辑:此外,您的解决方案是错误的,因为byte []的字符串参数.ToString( string )不是您要分配的变量,而是格式。你应该做点什么:
private void encodeToolStripMenuItem_Click(object sender, EventArgs e)
{
UTF8Encoding utf8 = new UTF8Encoding();
string textstring;
string encodedString;
textstring = richTextBox1.Text;
byte[] encodedBytes = utf8.GetBytes(textstring);
richTextBox1.Clear();
encodedString = encodedBytes.ToString();
richTextBox1.Text = encodedString;
}
但我怀疑这会使字符串显着缩短。