在java中将bitstring转换为byte

use*_*572 5 java byte

我需要在Java中将每个位设置为1个字节.

bit7 -  1,
bit6 -  1,
bit5 - 1,
bit4 -  0,
bit3 – 0,
bit2 – 0,
bit1 – 0,
bit0 – 0
Run Code Online (Sandbox Code Playgroud)

我写过:

byte extra_dop = 0b00000111;
Run Code Online (Sandbox Code Playgroud)

但得到以下错误:

-source 1.5不支持二进制文字(使用-source 7或更高版本来启用二进制文字)

Ami*_*t G 10

二进制文字在Java7中引入.

使用以下旧版本:

byte b = Byte.parseByte("00000111", 2);
Run Code Online (Sandbox Code Playgroud)

  • `Byte.parseByte("11111111", 2);` -> java.lang.NumberFormatException: 值超出范围 (3认同)
  • 因为他想要原始字节而不是字节对象,所以他应该使用`parseByte`而不是`valueOf`. (2认同)

Sea*_*oyd 0

这不是我们在 Java 中做事的方式。看看这个BitSet类,这是设置位标志的更方便的方法。

哼。让我重新表述一下。Java 是一种面向对象的语言,它提供了高效且面向对象的方法,以比位运算符更适合开发人员的方式执行操作。我建议您使用BitSet,因为它使您的代码更具可读性,并且它可以支持比简单位掩码更多的标志。更好的?

  • “这不是我们在 Java 中做事的方式。” 这是一个过于笼统的说法。虽然“BitSet”是一个选项,但使用单个“字节”值也是一个完全合法的选项。 (3认同)