将字符串压缩为较小的字符串
本文关键字:字符串 压缩 | 更新日期: 2023-09-27 17:58:59
例如,将"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;
}
您想要做的是编写一个压缩字符串的算法。然而,这并不是你只需动动手指就能做到的。
你应该首先考虑你收到的原始输入的类型:它是人类可以理解的文本吗?然后,我的建议是使用模式搜索算法,该算法寻找重复的字符序列并标记它们的位置,而不是使用从那时起的坐标。这是大多数文件压缩算法,如WinRar的算法,主要做的事情。要解码,然后迭代压缩的字符串,请查找坐标头,并使用它们来重新组合整个字符串。
EDIT:另外,您的解决方案是错误的,因为byte[]的string参数。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;
}
但我怀疑这会让绳子明显变短。