gpt4 book ai didi

java - 在 Java 中将一个 boolean 数组打包到一个 int 中

转载 作者:行者123 更新时间:2023-12-04 20:45:42 25 4
gpt4 key购买 nike

我对这个过程中涉及的所有位移和掩码不是很熟悉,但我有一个模糊的想法。

我正在寻找一种方法将大约 30 个 boolean 值打包到一个 int 或 long 中,以便我可以通过一种数据类型发送打包数据,而不是通过 30 个单独的 boolean 值发送。如果可能的话,或者使用位集可能会有所帮助。我想知道是否有人可以让我深入了解如何打包这些值。

最佳答案

如果您有 int (32 位),您可以像这样设置、清除和检查第 N 个(0-31)位:

int bits = 0;

// Set bit n
bits |= 1 << n;

// Clear bit n
bits &= (1 << n) ^ -1;

// Check bit n
if ((bits & 1 << n) != 0) { /*bit was set*/ }

因此,要转换 boolean数组转换为位掩码:
boolean[] bools = /*allocated elsewhere, max. length: 32*/;

int bits = 0;
for (int i = 0; i < bools.length; i++)
if (bools[i])
bits |= 1 << i;

并将位掩码转换为 boolean大批:
int bits = /*assigned elsewhere*/;

boolean[] bools = new boolean[30]; /*max. length: 32*/
for (int i = 0; i < bools.length; i++)
if ((bits & 1 << i) != 0)
bools[i] = true;

关于java - 在 Java 中将一个 boolean 数组打包到一个 int 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32550451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com