将字符串压缩为较小的字符串

本文关键字:字符串 压缩 | 更新日期: 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;
    }

但我怀疑这会让绳子明显变短。