我有一个结构,我正在转换成一个长度为37的字节数组,然后从它转换成一个字符串。
我正在编写一个非常基本的激活类型库,这个字符串将在人与人之间传递。所以我想把它从37长度缩短到更便于打字的东西。
现在:
什么是缩短字符串的好方法,但仍然维护存储在其中的数据?
谢谢。
发布于 2011-12-28 17:44:51
在一般情况下,从任意的byte[]到字符串需要更多的数据,因为我们假设我们希望避免不可打印的字符。减少的唯一方法是在基础之前进行压缩--不管是什么(你可以比基数稍微高一点--64,但不多--当然,不再是“友好的”了),但是压缩对于这么短的尺寸是不会真正起作用的。基本上你不能这么做。你想把一夸脱装进一品脱的锅里,但那不管用。
你可能不得不重新考虑你的要求。可能在内部保存BLOB,并发出一个较短的令牌(可能是10个字符,可能是一个guid),它是对实际BLOB的键。
发布于 2011-12-28 17:38:47
数据压缩可能是一种签出的可能性,但您不能仅仅将40字节的消息压缩为6个字节(例如)。
如果可能的字符串/类型的空间有限,则将它们映射到列表(信息编码)。
发布于 2011-12-28 17:39:11
我不知道有什么比基数64更好的了,如果你真的要传递这个值,并且用户必须输入它。
如果您有一个中央数据存储区,它们都可以访问,那么您可以只给他们您保存它的行的ID。当然,这取决于这些数据的“秘密”程度。
但我怀疑,如果您试图使用这个激活,您需要他们有一个实际的价值。
字符串将如何传递?你能指望用户可能只是复制/粘贴吗?也许花了一些时间来清理来自电子邮件阅读器的多余的中断,甚至您的“从这里复制”和“复制到这里”行可能会产生更多的成果!
https://stackoverflow.com/questions/8659193
复制相似问题