使字符串变小c#
回答
考虑到GZip需要最小10字节的页眉和8字节的页脚,这种解决方案不适用于50-60个字符的字符串。 – 2010-06-20 18:38:17
我同意大卫...我测试了100个字符,然后结果出来了170个字符.. – Kaan 2010-06-21 15:19:13
这种规模的有效压缩将是困难的。你可能会考虑Huffman coding。这可能会给你比gzip更小的压缩(因为它会导致二进制代码而不是基本-85序列)。
好了,然后,我需要一些测试类:) – Kaan 2010-06-21 15:08:33
@Kaan,我很高兴花几分钟放在一起但是,正如其他人所说的,除非你能提供你正在使用的字符串的一些例子,否则它们将不会有用。 – 2010-06-21 15:22:21
这里是例子:http:// localhost:52294/Default.html?LA = 40,9305222197136&LO = 29,8102416992188&N = t%FCrkiye%20denemE&D = kaan&M = r&Z = 4,谢谢大卫:) – Kaan 2010-06-21 15:46:19
该框架包括GZipStream
和DeflateStream
类。但是这可能不是你想要的 - 什么输入字符串必须被压缩?只有ASCII码?只有信件?字母数字字符串?完整的Unicode?什么是允许的输出字符串?
从算法的角度来看,如果没有对可能输入空间的进一步了解,我建议使用arithmetic coding。与Huffman coding相比,这可能会将压缩后的尺寸缩小几个附加位,因为它不限于每个符号的整数位数 - 这在处理这种小型输入时可能变得很重要。
GZip需要最少18个字节的开销,这会在这个规模上丧失其效力。 – 2010-06-20 18:40:06
您是否想过使用加密哈希?例如,SHA-1(http://en.wikipedia.org/wiki/SHA-1)可用于输入字符串以产生20字节的摘要。当然,摘要总是20个字节 - 即使输入字符串比20个字节短。
我会使用一些基本的,如RLE或基于共享字典的压缩,然后是block cipher,保持大小不变。
也许smaz对你而言也很有意思。的基本压缩算法
实例:
- RLE(修改或不)
- 霍夫曼编码
- 挖洞轮车变换块密码( “位twiddlers”)的
实例:
- AES
- 河豚
- DES
- 三重DES
- 蛇
- Twofish的
你将能够找出使用(以上链接)维基百科是什么fullfills您的需求。
如果输入数据预计会有许多相同数据的内部运行,那么这并不是一个坏建议。典型的文本数据不符合该要求。 – 2010-06-20 18:44:55
如果您的字符串只包含a-z和0-9之间的小写字符,您可以将它编码为7位。
这会将60个字符串压缩为53个字节。如果你不需要数字,你可以使用6位数字,把它减少到45个字节。
因此,选择正确的压缩方法取决于您的字符串包含的数据。
- 1. C字符串变为空
- 2. 改变C字符串
- 3. C#变量名字符串
- 4. 互操作C++结构在C#变量字符串大小
- 5. 将字符串拆分成长度可变的较小字c#
- 6. 使字符串小写XSLT
- 7. Ansi C - 将字符串转换为小写字符串
- 8. C#将字符串更改为字符串中的小索引
- 9. 在C++中将字符串划分为更小的字符串
- 10. C字符串字符串
- 11. C++字符串!=字符串
- 12. 函数调用使用字符串文字但不带字符串变量C
- 13. C字符串到宽C字符串
- 14. 改变C中一个字符串的大小,有可能吗?
- 15. 循环中C++字符串大小变化
- 16. C++字符串大小错误
- 17. C++奇怪的字符串大小
- 18. C#字符串格式未知大小
- 19. C#中的固定字符串大小#
- 20. C连接字符串变量字符串
- 21. C++字符串是否可变UNLIKE Java字符串?
- 22. 使用字符串变量
- 23. 使用字符串变量
- 24. 使用字符串变量
- 25. 使用字符串可变
- 26. C++;把字符变成C形字符串
- 27. 字符串小写字母的第一个字符 - C#
- 28. 如何在c#中使用xml中的字符串变量作为字符串?
- 29. 字符串使用C
- 30. 置字符串使用C
加密通常不会使数据变小。你是说压缩? – 2010-06-20 18:36:17
由于鸽子的原理(http://en.wikipedia.org/wiki/Pigeonhole_principle),对于所有琴弦都是不可能的。 – Eilon 2010-06-20 18:40:30
你能告诉我们这些字符串是什么样子吗?他们将包含哪些字符?几个样本应该是好的 – mpen 2010-06-20 18:40:57