将字符串和字节存储在单个int值中

时间:2013-12-10 17:33:40

标签: java algorithm

我无法为此找到解决方案。我需要一个方法来将字符串和字节存储在单个int值中。哈希对此不利,因为该方法应该允许进行解码。任何提示都会受到赞赏,找不到合适的算法。

此致

Leo Tietz

2 个答案:

答案 0 :(得分:6)

int有32位。该字节将占用8位。这样你就可以使用24位 - 足够一个半char值,未压缩。

除非确实只需要存储单个字符串,或者您需要表示的字符范围有限,否则您需要重新审视自己的要求 - 听起来您从根本上说要解决您尝试在单个int中编码的信息量的问题。

答案 1 :(得分:5)

int只能存储4个字节。因此,如果您有一个长达3个字节的ASCII字符串,您可以像这样存储它

String s = ...
byte b = ...
int num = (s.charAt(0) << 24) + (s.charAt(1) << 16) 
        + (s.charAt(2) << 8) + (byte & 0xFF);

无论您如何编码,任何数量的编码都不允许您在int中存储超过32位的信息。您可以使用存储64位的long,如果假设每个字符有7位,则可以存储8个字符和一个字节。