[英]Java, store in byte higher value than 127
对于分配,我得到一些字节,对它们的Binary值进行一些计算,并且必须将计算出的Stuff返回到Byte Array中。
我的问题是,该字节最多只能存储127,但是我的值最多可以存储2 ^ 8-1(11111111)。 我已经尝试过将其转换为十六进制,但是当然也不起作用。
那么,那是可能的,如果是的话,那是不可能的吗?
如果我理解您的问题,那么在执行任何计算之前,您需要对255的字节进行AND(与)运算,因此您将处理0到255之间的值,而不是-128到127。当您分配更高的值时比127溢出的字节要多,因此java中的128字节是-128,但是在将AND(&)-128与255进行对后,您将得到+128。
// This prints 0 to 127, then -128 to -1
public static void main(String[] args) {
for (int i = 0; i <= 255; i++) {
System.out.println(((byte)i));
}
}
// Where this will print 0 to 255
public static void main(String[] args) {
for (int i = 0; i <= 255; i++) {
System.out.println(((byte)i) & 255);
}
}
通常,在Java中,此数字将表示为int
。 这为您提供了足够的空间来存储您的值。 如果需要将其表示为字节,以便将其传输到某个地方或类似的东西,则可以将其转换为
int i = 255;
byte b = (byte) (i & 0xff);
但是在这种情况下,它仍然是负数,因为byte
是用Java签名的。
另外,您可能已经发现,十六进制文字默认为int
类型。 因此0xff
确实具有您想要的值255,但这是一个int
,而不是byte
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.