【问题标题】:Casting a boolean array in Java?在Java中转换一个布尔数组?
【发布时间】:2009-10-06 21:28:08
【问题描述】:

有什么我可以在 Java 中将布尔数组转换为的东西吗?如果我能说就好了

boolean[] bools = new boolean[8];
int j = (int)bools;

但我不确定这在 Java 中是否可行。

【问题讨论】:

  • 是否要将布尔数组视为位模式并转换为模式的 int 值?
  • 您是否要获取指向布尔数组的指针?
  • 您对布尔数组如何映射到整数的期望是什么?

标签: java casting boolean


【解决方案1】:

不,您不能使用 boolean[] 来执行此操作 - 但听起来您可能需要 BitSet,它是一组布尔值的紧凑表示。

【讨论】:

    【解决方案2】:

    Java 布尔值的大小是特定于实现的,在任何情况下它都可能不是一个位。 如果您想要一种简单的方法来操作位,请查看BitSet

    【讨论】:

    • 它们不仅是特定于实现的,而且几乎总是完整的“int”大小(或者更准确地说,机器字大小)。不这样做会降低您的系统速度。
    【解决方案3】:

    这是从boolean[] 转换为整数的一种快速而简单的方法:

    static int intFromBooleanArray(boolean[] array) {
        return new BigInteger(Arrays.toString(array)
                              .replace("true", "1")
                              .replace("false", "0")
                              .replaceAll("[^01]", ""), 2).intValue();
    }
    

    示例:

    intFromBooleanArray(new boolean[] {true, false, true, false, true, false});
    // => 42.
    

    【讨论】:

      【解决方案4】:

      如果你想要一个位模式,我认为你最好使用位掩码,例如

      final int BIT_1 = 0x00000001;
      final int BIT_2 = 0x00000002;
      
      // represents a bit mask
      int value;
      
      // enable bit 2
      value |= BIT_2
      
      // switch off bit 1
      value &= ~BIT_1
      
      // do something if bit 1 is set...
      if (value & BIT_1) {
      

      等等。有关更多示例,请参阅here

      【讨论】:

      • 您能否在 etc 部分添加更多详细信息?
      【解决方案5】:

      您可以将boolean[] 转换为Object,仅此而已。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多