压缩小字符串

时间:2011-03-02 03:40:22

标签: c# compression

我有数据字符串340字节的字符串主要由符号和数字组成,如“føàA¹º@ƒUë5§Ž§” 我想压缩到250或更少的字节,以将其保存在我的RFID卡上。 由于此数据与指纹温度有关。我想要无损压缩。 那么我可以在C#中实现任何算法来压缩它吗?

2 个答案:

答案 0 :(得分:1)

如果数据是严格的数字和符号,我强烈建议将数字更改为基于int的值。例如:

+ 12939272-23923 + 927392

可以压缩成3个32位整数,即22个字节=> 16个字节。选择正确的整数大小(无论是32位,24位,16位)应该有所帮助。

如果整数大小变化很大,你可以使用8位开始并使用值255来指定下一个8位成为整数的8个更高有效位,使其成为15位。

或者,您可以识别最重要的字符并为其指定0。第二个最重要的角色获得10,第三个110.这是一个非常粗略的压缩,但如果你的数据非常有限,这可能只是为你做的工作。

答案 1 :(得分:0)

您对字符串有任何其他信息吗?例如,它是否比其他人更频繁地包含某些字符?它是包含所有255个字符还是仅包含它们的一部分?

如果是这样,霍夫曼编码可能会对您有所帮助,请参阅thisthis other link了解C#中的实现。

老实说,这取决于输入字符串的外观。我要做的是尝试使用rar,zip,7zip(LZMA)以及非常小的字典(否则它们只会占用太多空间用于预处理信息)并查看原始数据有多大他们生成的压缩文件是(可能必须使用他们的库才能使它们成为带状头以节省空间)。如果它们中的任何一个产生250b以下的文件,那么找到它的c#库,然后你去。