Java,以比127更高的字节存储

时间:2015-06-17 14:32:05

标签: java casting byte

对于赋值,我得到一些字节,对其二进制值进行一些计算,并且必须在字节数组中返回计算出的Stuff。

我现在的问题是,该字节最多只能存储127个,但我的值最多可以达到2 ^ 8-1(11111111)。我已经尝试将其转换为十六进制,但它当然也无法正常工作。

那么,这是可能的,如果是的话,或者这样的运动是不可能的那样?

2 个答案:

答案 0 :(得分:2)

如果我理解你的问题,在执行任何计算之前,你需要将你的字节与(和)相对于255,所以你将处理从0到255而不是-128到127的值。当你为溢出的字节分配一个高于127的值,所以128作为java中的一个字节是-128,但在你和(&)-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);
    }
}

答案 1 :(得分:1)

通常,在Java中,此数字将表示为mydata$counts <- with(mydata, table(v)[as.character(v)]) 。这为您提供了足够的空间来存储您的价值观。如果你需要将它表示为一个字节,以便将它传送到某个地方或类似的东西,那么你会把它像

一样。
int

但在这种情况下,它仍然是否定的,因为int i = 255; byte b = (byte) (i & 0xff); 是用Java签名的。

此外,十六进制文字默认为byte类型,您可能已经发现了。因此int确实具有您想要的值255,但它是0xff,而不是int