我在java中面临一个关于无符号值的问题。可以请我。实际上问题是,我有一个字节缓冲区,其中放置了不同的数据类型(例如,第一个浮点数,然后是双精度数,然后是双精度数之后的整数),其中一些可能是有符号的,而另一些是无符号的。我的列表有它们的顺序和数据类型以及符号信息,所以我从字节缓冲区中读取它们并将它们直接分配给相应的变量
例如:
int i= bytebuffer.getInt();
一切都很好,但对于无符号最大值,它给出的是负值。对于 int float, double 这与我面临的问题相同。
我读到一些java不支持无符号值的地方,但我遇到了int、short到无符号值的转换,但我找不到关于double、float的信息。
编辑:我的代码是
File file= new File("blob_960");
int count,length;
length = (int)(file.length());
count=(length/380);
ByteBuffer bytebufr= ByteBuffer.allocate(length);
bytebufr.order(ByteOrder.LITTLE_ENDIAN);
byte[] bytes= new byte[length];
FileInputStream fis = new FileInputStream(file);
fis.read(bytes,0, length);
bytebufr.put(bytes);
bytebufr.position(0);
int i = bytebufr.getInt();
float f = bytebufr.getFloat();
double d = bytebufr.getDouble();
示例 - 字节值是否存在 220 我正在使用读取字节
byte b = bytebufr.get();
System.out.println(b); // this is giving -36
// I am expecting 220.
Binary value of 220 is -11011100
Binary value of -36 is -11011100
它将值视为有符号值并给出 -36,但该值是无符号的,我期待 220。
双也同理。
请任何机构对此提供帮助。