当我说0b11111111是java中的一个字节时,它表示"不能将int转换为byte,"这是因为,据我所知,11111111 = 256,java中的字节是有符号的,从-128到127.但是,如果一个字节只是8位数据,那么是不是11111111 8位?我知道11111111可能是一个整数,但在我的情况下,它必须表示为一个字节,因为它必须以字节形式发送到一个文件。那么如何将一个带有位11111111的字节发送到一个文件(顺便说一句,这是我的问题)?当我尝试打印二进制值-1时,我得到11111111111111111111111111111111,为什么?我不太了解签名字节的工作原理。
答案 0 :(得分:7)
您需要将值强制转换为字节:
byte b = (byte) 0b11111111;
您需要演员的原因是0b11111111
是一个int
字面值(十进制值为255)并且它超出了有效byte
值的范围(-128到+) 127)。
答案 1 :(得分:0)
Java允许十六进制文字,但不允许二进制文件。您可以使用以下命令声明二进制值为11111111的字节:
byte myByte = (byte) 0xFF;
您也可以使用十六进制文字来存储整数和长整数。
编辑:你实际上可以在Java 7及更高版本中使用二进制文字,我的不好。