java布尔值如何转换为0 1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java布尔值如何转换为0 1相关的知识,希望对你有一定的参考价值。

参考技术A 实际上java的boolean类型的值只有true和false,其不对应任何数值,无法强制转换,只能自己通过代码转换。如if(true)return 1 参考技术B System.out.println(p?1:0);
System.out.println(q?1:0);
System.out.println(p&q?1:0);
System.out.println(p|q?1:0);
System.out.println(!p?1:0);
参考技术C public int convertBoolean(boolean flag)
return flag? 1: 0;
追问

class LogicalOpTable
public static void main(String args[])
boolean p, q;
System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");
p=true; q=true;
System.out.print(p + "\t" +q +"\t");
System.out.print((p&q) +"\t" + (p|q) + "\t");
System.out.println((p^q) + "\t" + (!p));

如何让输出的结果显示为0和1、、

追答

public class LogicalOpTable
public static void main(String args[])
boolean p, q;
System.out.println("P\tQ\tAND\tOR\tXOR\tNOT");
p = true;
q = true;
System.out.print(convertBoolean(p) + "\t" + convertBoolean(q) + "\t");
System.out.print(convertBoolean((p & q)) + "\t" + convertBoolean((p | q)) + "\t");
System.out.println(convertBoolean((p ^ q)) + "\t" + convertBoolean((!p)));


public static int convertBoolean(boolean flag)
return flag? 1: 0;


本回答被提问者采纳

如何将布尔值列表转换为单个 int,其中每个布尔值都被解释为位?

【中文标题】如何将布尔值列表转换为单个 int,其中每个布尔值都被解释为位?【英文标题】:How to convert a list of boolean to a single int where each boolean is interpreted as a bit? 【发布时间】:2020-01-08 21:54:39 【问题描述】:

我有一个bools 列表,我想将其转换为单个int。例如:[True, True, False, True, False] -> 010112 -> 1110

我发现了这个问题:How do I convert a boolean list to int?,但它在 C# 中,这对我没有帮助。

我的第一次尝试是做

def bools2int(bools):
    n = 0
    for b in bools[::-1]:
        n *= 2
        n += b
    return n

哪个有效。

但是有没有更多的 pythonic 方法来做到这一点?可以一行完成吗?

【问题讨论】:

您的 bools2int 函数返回 52,而不是 11。这使得猜测您真正想要做什么几乎是不可能的。尝试更仔细的解释,用清晰的例子? 所以你的意图是输入是二进制表示中的位列表,最低有效位在前?如果是这样,那很好,但是您的 bools2int 根本没有实现这一点,所以这个问题本质上仍然很困惑。 很抱歉,我修复了这个功能,它应该可以按预期工作。 【参考方案1】:

IIUC,使用内置int(x, base=2)

l = [True, True, False, True, False]

def bool2int(bools):
    return int(''.join(str(int(i)) for i in reversed(bools)), 2)
bool2int(l)

输出:

11

【讨论】:

【参考方案2】:

经过一番折腾,我找到了这个

sum([b << i for i, b in enumerate(bools)])

我认为这是一个非常 Pythonic 的解决方案。

【讨论】:

以上是关于java布尔值如何转换为0 1的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 查询:如何将布尔值 1 和 0 转换为“通过”或“失败”

java-me:将字符串转换为布尔值

如何将字符串转换为布尔值

如何将Object转换为布尔值?

将 0 和 1 字符串转换为布尔值的最 Pythonic 方式是啥? [复制]

将 0 和 1 (float64) 转换为布尔值时将空值转换为 True [重复]