繁体   English   中英

Java,以大于127的字节存储值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM