Java 简单的 boolean[] 到 byte 的转换

标签 java arrays boolean byte primitive-types

我有一个包含 8 个 boolean 值的数组,我想将其简单地转换为一个字节。有没有简单的方法可以做到这一点?还是我必须使用 for 循环?

我个人更喜欢简单的最多两行的解决方案(如果存在的话)。

感谢您的帮助。

编辑:可能的重复只是一个字节的一个 boolean 值,我有一个数组。

另一个编辑:我从 udp 数据包中获取一个字节,然后将第一位( boolean 值)设置为 false,然后我需要再次从中获取一个字节。

最佳答案

我认为一个循环更好,但如果你必须有一个衬里:

byte b = (byte)((bool[0]?1<<7:0) + (bool[1]?1<<6:0) + (bool[2]?1<<5:0) + 
                (bool[3]?1<<4:0) + (bool[4]?1<<3:0) + (bool[5]?1<<2:0) + 
                (bool[6]?1<<1:0) + (bool[7]?1:0));

对于输入:

boolean[] bool = new boolean[] {false,false,true,false,true,false,true,false};

你得到字节 42。

关于Java 简单的 boolean[] 到 byte 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32048064/

相关文章:

java - 文件传输 RMI

java - 在netbeans中自动格式化带有分号的行

PHP array_walk require_once

arrays - 表达式对于编译器来说太复杂 : an array with 14 attributes

设置和获取交集的 MySQL 字符串

java - 我的 boolean 值总是正确的

java - ini文件中 '#'行后解析错误

javascript - 模拟 Javascript 面向对象编程 Stoyan Stefanov 书中的字符串 split()

swift - 使用 AnyObject 时 Bool 被视为 int

java - 无法抓取标题