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