日期:2014-05-20  浏览次数:20720 次

java如何读取无符号的整型
因为我读一个二进制文件,这个二进制文件是通过c保存的,所以里面会有一些无符号整型unsigned int
我是用DataInputStream.readUnsignedByte()来把这四个字节读到一个byte数组里,然后我该怎么把这个byte数组变成一个long呢?

------解决方案--------------------
强制类型转换,由于long是8Byte,而byte是1Byte,所以, 定义一个byte的buffer,像这样:
byte b[8];
然后给buffer内读入值, 再强转, long l = (long)b就可以了
------解决方案--------------------
直接当整型读入unsigned int的4个字节,再转成long型,如下,看看i是如何转的。
Java code
public class Welcome
{
   public static void main(String[] args)
   {
     int i=0xffffffff;
     long l=0;
     if(i<0){
        i &= ~0x80000000;
        l = 0x80000000l;
     }
     l |= i;
    
     System.out.printf("%016x",l);
   }
}