Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何压缩字母数字字符串?_Java_Io - Fatal编程技术网

Java 如何压缩字母数字字符串?

Java 如何压缩字母数字字符串?,java,io,Java,Io,我想收缩字符串,比如-1234B56789C;ABC1D3E/FGH4IJKL约为20-25个不区分大小写的字符 我的目标是拥有一个最多为16个字符的字母数字字符串。它们必须保持可读性 可能吗?有没有算法可以用来压缩也有一些特殊字符的字母数字字符串 还必须能够恢复压缩。我认为,一般来说,除非使用不同的目标字母表,否则无法恢复压缩。 据我目前所知,您的源字母表是0-9和A-Z. 如果您扩展了目标字母表以包括某些N>0个其他字符, 然后,您可以使用较少的字符对输入字符串进行编码 (例如,您可以使用

我想收缩字符串,比如
-1234B56789C;ABC1D3E/FGH4IJKL
约为20-25个不区分大小写的字符

我的目标是拥有一个最多为16个字符的字母数字字符串。它们必须保持可读性

可能吗?有没有算法可以用来压缩也有一些特殊字符的字母数字字符串


还必须能够恢复压缩。

我认为,一般来说,除非使用不同的目标字母表,否则无法恢复压缩。
据我目前所知,您的
源字母表是0-9和A-Z.
如果您扩展了
目标字母表
以包括某些N>0个其他字符,
然后,您可以使用较少的字符对输入字符串进行编码
(例如,您可以使用

目标字母表中的单个字符)

您可以尝试类似LZW的方法,并在输入中查找常见模式。例如,如果您发现“1234”经常出现在字符串中,那么您可以将其编码为“Q”


这种方法无法始终满足您对16个字符编码字符串的要求,除非您能够证明您选择的压缩映射始终以足够的规律性出现在源代码中,以达到16个字符的长度。

我在您的字符串中看到了分号。您还可以使用哪些非字母数字字符?我还不清楚,但肯定是:
/也可以使用小写字符吗?或者在您的工作流程中,字符是不区分大小写的吗?很好,我的字符串是完全不区分大小写的!如果要表示26*2+10+3个不同的值,则为65个字符。ASCII字符集中有94个字符(不包括空白字符和0x7F字符)。我还没有做算术,但我想这可能会让你得到大约15%的压缩。会很紧的,这是个好主意。但是:当再次解压字符串时,我如何知道“Q”是一个真正的字母数字块还是一个压缩的十进制块?@membersound-你必须建立一个字典-字典中的任何内容都被翻译,任何不被翻译的内容都会原封不动地传递。看看它是如何工作的。