随笔-311  评论-598  文章-0  trackbacks-0
无符号数都可以用BigInteger来完成表现,他自身附带了很多计算方法,可以有效地完成无符号数的计算工作。
/**
     * 逆转字节数组
     * 
     * 
@param b
     * 
@return
     
*/
    
private static byte[] reverse(byte[] b) {

        
byte[] temp = new byte[b.length];
        
for (int i = 0; i < b.length; i++) {
            temp[i] 
= b[b.length - 1 - i];
        }
        
return temp;
    }

    
/**
     * 读取无符号位的Short数,16位
     * 
     * 
@param readBuffer
     * 
@return
     * 
@throws IOException
     
*/
    
private static final BigInteger readUnsignedShort(byte[] readBuffer)
            
throws IOException {
        
if (readBuffer == null || readBuffer.length < 2)
            
return new BigInteger("0");
        
// 处理成无符号数
        byte[] uint64 = new byte[3];
        uint64[
2= 0;
        System.arraycopy(readBuffer, 
0, uint64, 02);
        
return new BigInteger(reverse(uint64));
    }

    
/**
     * 读取无符号位的长整数,64位
     * 
     * 
@param readBuffer
     * 
@return
     * 
@throws IOException
     
*/
    
private static final BigInteger readUnsignedInt64(byte[] readBuffer)
            
throws IOException {
        
if (readBuffer == null || readBuffer.length < 8)
            
return new BigInteger("0");
        
// 处理成无符号数
        byte[] uint64 = new byte[9];
        uint64[
8= 0;
        System.arraycopy(readBuffer, 
0, uint64, 08);
        
return new BigInteger(reverse(uint64));
    }


---------------------------------------------------------
专注移动开发

Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2010-05-03 09:18 TiGERTiAN 阅读(8941) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: