所以我想尝试一个int ex。 3240并转换为打印-88的字节。
final int x = (int) (buffer[bufferIndex++] * 32767.0);
System.out.println("1 " + x);
byteBuffer[i] = (byte) x;
System.out.println("2 " + (byte) x);
System.out.println("3 " + (int) byteBuffer[i]);
我在从字节转换回int时遇到问题。我该如何服用-88并再次使其成为3240?
答案 0 :(得分:3)
关于缩小原始转换的Java Language Specification
缩小的原始转换可能会丢失有关的信息 数值的整体幅度,也可能失去精度 范围。
将int
值3240
转换为字节值-88
时,您在截断的字节中丢失了信息。 int
值10920
也会转换为-88
。那么其他int
值也会很多。
无法从-88
获取3240
。
答案 1 :(得分:0)
除了Sotorios的回答,这就是你可以为转换做的事情:
byte to int
Byte b = new Byte(NUMBER);
int i = b.intValue();
int to byte
int i = NUMBER;
byte b = (byte) i;