您最喜爱的技术社区。浏览所有集合
提出问题,找到答案,并与团队堆栈溢出协作。
提出问题,找到答案,并与团队堆栈溢出协作。探索团队
找到集中、可信的内容,围绕您最常用的技术进行协作。
团队
工作问答
在一个结构化且易于搜索的位置内连接和共享知识。
尽早访问并查看新功能的预览。
我有340字节的字符串数据,主要由符号和数字组成,如“föáA¹º@ƒUö5§Ɠ§”我想压缩成250字节或更少的字节来保存在我的RFID卡上。由于此数据与指纹温度有关。我希望无损压缩。那么有什么算法可以用C#实现来压缩它吗?
如果数据严格是数字和符号,我强烈建议将数字更改为基于int的值。如:
+12939272-23923+927392
可以压缩为3个32位整数,即22个字节=>16个字节。选择正确的整数大小(无论是32位、24位还是16位)都会有所帮助。
如果整数大小变化很大,您可以使用8位开始,并使用值255指定下一个8位成为整数的8个更重要的位,使其成为15位。
或者,您可以确定最重要的字符并为其赋值0。第二个最重要字符得到10,第三个得到110。这是一个非常粗糙的压缩,但如果您的数据非常有限,这可能正好适合您。
关于你的字符串还有其他信息吗?例如,它是否比其他字符更经常包含某些字符?它包含所有255个字符还是仅包含其中的一个子集?
如果是这样,哈夫曼编码可能会对您有所帮助,请参阅这或这个其他链接用于C#中的实现。
老实说,这取决于输入字符串的外观。我要做的是尝试使用rar、zip、7zip(LZMA)字典尺寸很小(否则,它们只会为预处理信息占用太多空间),并查看它们生成的原始压缩文件有多大(可能必须使用它们的库才能使它们剥离标头以节省空间)。如果它们中的任何一个产生了一个250b以下的文件,那么找到它的c#库就可以了。
提醒:堆栈溢出上不允许使用人工智能工具生成的答案。了解更多信息
必需,但从未显示
Required, but never shown
单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.