对于赋值,我得到一些字节,对其二进制值进行一些计算,并且必须在字节数组中返回计算出的Stuff。
我现在的问题是,该字节最多只能存储127个,但我的值最多可以达到2 ^ 8-1(11111111)。我已经尝试将其转换为十六进制,但它当然也无法正常工作。
那么,这是可能的,如果是的话,或者这样的运动是不可能的那样?
答案 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
。