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

时间:2016-07-18 02:03:58

标签: byte bytearray unsigned signed

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

2 个答案:

答案 0 :(得分:7)

您需要将值强制转换为字节:

byte b = (byte) 0b11111111;

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

答案 1 :(得分:0)

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

byte myByte = (byte) 0xFF;

您也可以使用十六进制文字来存储整数和长整数。

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