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

use*_*459 1 unsigned signed byte bytearray

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

Ted*_*opp 8

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

byte b = (byte) 0b11111111;
Run Code Online (Sandbox Code Playgroud)

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