如何将 11111111 表示为 java 中的一个字节

How to represent 11111111 as a byte in java

当我说 0b11111111 是 java 中的一个字节时,它说“无法将 int 转换为字节”,这是因为,据我了解,11111111=256,而 [=13= 中的字节] 有符号,从 -128 到 127。但是,如果一个字节只是 8 位数据,那么 11111111 不是 8 位吗?我知道 11111111 可以是一个整数,但在我的情况下它必须表示为一个字节,因为它必须以字节形式发送到文件。那么我如何将一个位为 11111111 的字节发送到一个文件(顺便说一句,这是我的问题)?当我尝试打印 -1 的二进制值时,我得到 11111111111111111111111111111111,这是为什么?我真的不明白带符号的字节是如何工作的。

您需要将值转换为一个字节:

byte b = (byte) 0b11111111;

您需要转换的原因是 0b11111111 是一个 int 文字(十进制值为 255)并且它超出了有效 byte 值的范围(-128到 +127).

Java 允许十六进制文字,但不允许二进制。您可以使用以下命令声明二进制值为 11111111 的字节:

byte myByte = (byte) 0xFF;

您也可以使用十六进制文字将二进制数据存储为整数和长整数。

编辑:你实际上可以在 Java 7 及更高版本中使用二进制文字,我的错。