我很难找到解决方案.我需要一个方法来将字符串和字节存储在单个int值中.哈希对此不利,因为该方法应该允许进行解码.任何提示将不胜感激,找不到合适的算法.
问候
Leo Tietz
一个int有32位.该字节将占用8位.这样就可以使用24位 - 足够一个半char值,未压缩.
除非您真的只需要存储单个字符串,或者您需要表示的字符范围有限,否则您需要重新审视您的要求 - 听起来您基本上会遇到信息量问题我试图在一个单一的编码int.
int只能存储4个字节.因此,如果您有一个长达3个字节的ASCII字符串,您可以像这样存储它
String s = ...
byte b = ...
int num = (s.charAt(0) << 24) + (s.charAt(1) << 16)
+ (s.charAt(2) << 8) + (byte & 0xFF);
Run Code Online (Sandbox Code Playgroud)
int无论您如何编码,任何数量的编码都不允许您存储超过32位的信息.您可以使用long存储64位的存储器,如果为每个字符设置7位,则可以存储8个字符和一个字节.