【发布时间】:2013-11-07 09:03:26
【问题描述】:
我遇到了一个关于 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。
double 也一样。
请任何机构帮忙。
【问题讨论】:
-
请向我们展示您的代码。
-
无符号整数---我听说过。但是无符号双?这是第一次。
-
什么不适用于
getDouble()?你会得到什么,你期望什么? -
无符号双精度不是由 IEEE 标准指定的,所以无论你有什么,它都是非标准的,因此在 JDK 或任何其他标准库中不受支持。
-
不存在无符号浮点(在这种情况下为双精度)
标签: java unsigned bytebuffer