【发布时间】:2015-06-27 18:45:43
【问题描述】:
我的存储空间有限,只能在字节数组中存储 16 个字节。如果我有一个长字符串,String.getBytes() 将不适合我。
如何将 7 位标准 ascii 字符集的长 java 字符串转换/编码为 16 字节字节数组,可以编码回原始字符串?不过,我知道原始输入字符串会有限制。我也在寻找建议如何设置具有合理长度限制的要求,即电子邮件地址长度。
【问题讨论】:
-
字符串是否具有任意值,或者它只能具有有限数量的值?这些字符串中有多少个?存储是否仅限于 RAM,或者是否可以将字符串存储在取消 16 字节限制的地方?
-
限制实际上是由外部库设置的,该库限制将字节数组放入 16 个固定数组大小。我的输入字符串实际上是 7 位 ascii 可打印字符集中的电子邮件地址。我不能将电子邮件地址限制为少于 16 个字符,但我想知道一种合理的方法来扩展合理的电子邮件长度。
-
如果是电子邮件地址,可以轻松创建自定义编码,将所有小写字母和大多数标点符号映射为 5 位字符,然后对其进行扩展以添加对数字的支持。这样,您最多可以在 16 个字节中容纳 25 个字符。不确定它对你来说是否足够。对我来说,不是。您还可以使用上下文霍夫曼编码对编码地址进行一些实验。我怀疑结果会不会很好。