我需要在一个变量中传达 16 个项目的可用性信息,它们的 id(0-15)。
char item_availablity[16];
我可以用 2 个字节对其进行编码,其中每个位都映射到一个项目 id,其中1
表示可用和0
表示不可用 For ex0000100010001000
这个数字包含具有 id 4
、8
、12
的项目可用的信息
我需要使用少于 2 个字节对这些信息进行编码。
这可能吗?如果是这样,怎么做?
我需要在一个变量中传达 16 个项目的可用性信息,它们的 id(0-15)。
char item_availablity[16];
我可以用 2 个字节对其进行编码,其中每个位都映射到一个项目 id,其中1
表示可用和0
表示不可用 For ex0000100010001000
这个数字包含具有 id 4
、8
、12
的项目可用的信息
我需要使用少于 2 个字节对这些信息进行编码。
这可能吗?如果是这样,怎么做?
简而言之:
你不能。用不到 16 位存储 1 位关于 16 个独立事物的信息是根本不可能的。也就是说,在一般情况下。
一个例外是如果有一些限制。例如,让我们调用 items i_1, i_2 ... i_16
。如果您知道当且仅当i_1
也可用时它是可用的,那么您可以仅用一位编码关于这两个项目的可用性。 i_2
一个更复杂的例子是i_1
可用的 iffi_2
或i_3
可用的。然后您可以将这三个项目的可用性存储在两位中。
但是对于一般情况,不,这是完全不可能的。
在这里尝试开箱即用 - 如果某些项目比其他项目更稀有,您可以使用可变长度编码,这样平均而言,存储信息所需的时间不到 16 位。但是,将存在需要超过 16 位的可用性组合。