当前位置: 首页 > 知识库问答 >
问题:

在Groovy中将整数转换为布尔数组

董子航
2023-03-14

我需要将一个整数(代表x.509 KeyUsage掩码)转换为布尔数组,在Java中,我有以下可用函数,可以正常工作:

public boolean[] getKeyUsage()
{
    int mask =  144; // Integer.parseInt(testRunner.testCase.getPropertyValue("keyUsage")); 
    byte[] bytes = new byte[] { (byte)(mask & 0xff), (byte)((mask & 0xff00) >> 8) };
    boolean[] keyUsage = new boolean[9];

    for (int i = 0; i != 9; i++)
    {
        keyUsage[i] = (bytes[i / 8] & (0x80 >>> (i % 8))) != 0;
    }
    return keyUsage;
}

在这种情况下(144),它应该返回

密钥用法={boolean[9]@976}[0]=真[1]=假[2]=假[3]=真[4]=假[5]=假[6]=假[7]=假[8]=假

在Groovy中运行这个时,我得到

org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败: Script6.groovy: 22:期待'}',找到 ',' @ 第22行56列

我是Groovy的n00b,如果我遗漏了一些明显的东西,那么很抱歉

共有2个答案

谯嘉胜
2023-03-14

在Groovy中,以下内容无效:

int mask =  144;
byte[] bytes = new byte[] { (byte)(mask & 0xff), (byte)((mask & 0xff00) >> 8) };

以下内容有效:

int mask =  144;
byte[] bytes = [(byte)(mask & 0xff), (byte)((mask & 0xff00) >> 8)];

如果您喜欢,您可以消除演员阵容:

int mask =  144;
byte[] bytes = [(mask & 0xff), ((mask & 0xff00) >> 8)];

如果愿意,还可以删除分号。

我希望这能有所帮助。

衡高寒
2023-03-14

我认为这会得到您需要的结果:

boolean[] getKeyUsage( int mask ) {
    (7..0).collect { int it ->
        ( ( mask >> it ) & 1 )
    }
}

getKeyUsage( 144 ) == [ true, false, false, true, false, false, false, false ]

您遇到的错误是因为您在Groovy中构造数组时使用了:

byte[] bytes = [ 1, 2 ]

不是Java方式的新字节[{1,2}。但我认为你不需要字节数组。。。

 类似资料:
  • 我知道在 C 和 C 中,当将布尔转换为整数时, 和。我想知道向相反方向投射... 在下面的代码中,以下所有断言在使用 Visual Studio 2013 和 Keil μVision 5 编译的 .c 文件中都适用。注意 。 关于将非零、非一整数转换为布尔值,C和C标准有何规定?是否指定了此行为?请包括引文。 对于任何C编译器,我可以假设(bool)true == (int)1不是重复的吗?

  • PHP是否有任何内置函数可以接受布尔值并返回其整数等效值?0代表FALSE,1代表TRUE?当然,您可以轻松创建一个函数来做到这一点,我只是询问PHP内部是否有内置函数。我已经尝试了并将其转换为但它们不起作用,它们在TRUE和FALSE两种情况下都返回0。 编辑:问题是它不是真正的布尔值,而是一个字符串“false”、“true”,php没有检测到传递布尔值的jquery帖子。问题解决了,谢谢!

  • 问题内容: 概述Java程序如何将诸如“ 1,2,3,4,5”之类的字符串转换为数组({1,2,3,4,5}) 问题答案: 从zvzdhk: 然后,解析您的整数:

  • 问题内容: 有没有一种方法可以使用内置函数在PHP中将指数数转换为整数?格式化功能? 1.2378147769392E + 14至123781477693917 问题答案: number_format(1.2378147769392E+14,0,’‘,’‘) 但是,要处理大量数字,如果要保持精度,应该研究BCMath扩展

  • 问题内容: 在Java中将a转换boolean为an 的最常用方法是什么int? 问题答案: ^^ PS : true = 1 and false = 0

  • 问题内容: 我需要在Java中将一个字节转换为4个布尔值的数组。我该怎么办? 问题答案: 根据Michael Petrotta对您的问题的评论,您需要确定8位字节中的哪些位应测试所得的布尔数组。出于演示目的,我们假设您需要最右边的四个位,然后应该可以执行以下操作: 本例中的十六进制值(,等)是特殊的位掩码,在所需的位置仅设置了一个位。因此,0x01仅设置了最右边的位,0x08仅设置了从右开始的第四