我有二进制代码10111、100011、11101111等。现在我应该使用什么数据结构来存储这些代码,以便存储它们需要最小大小?
我不能使用字符串数组,因为与存储上述二进制代码的十进制等效值相比,所需的大小将更多。
我有二进制代码10111、100011、11101111等。现在我应该使用什么数据结构来存储这些代码,以便存储它们需要最小大小?
我不能使用字符串数组,因为与存储上述二进制代码的十进制等效值相比,所需的大小将更多。
java.util.BitSet
如果长度不固定,则专为此设计。
根据代码的长度,只需使用int
或long
。
如果它们很短,请使用byte
, int
, long
(取决于有多短)。
如果它们会更长一点,请使用byte
s、int
s 或long
s 的数组。例如,如果您需要存储 256 位代码,您可以在long[4]
.
如果您需要存储的代码的长度变化很大,您可以考虑一个类,其length
成员给出位数和一个byte
, int
, long
, byte[]
,int[]
或long[]
用于存储它们的成员(取决于大小和您想要的粒度类型)。或者,如果您真的想尽可能多地打包,您可以从存储区域中留出一些位来保存代码中的位数。
每个二进制代码可以按 8 位(一个字节)分成几部分。如果尾部小于 8 位,则有必要定义如何处理尾部。字节数组应该在这里很好地存储每个部分。