美文网首页
工作笔记(八)

工作笔记(八)

作者: overflow_e4e4 | 来源:发表于2019-09-26 11:19 被阅读0次

    java中byte[]和int互转

    众所周知计算机中有二进制组成,byte有8位2进制组成,java中int由4位2进制组成。
    今天由于某个需求我需要实现byte[4]和int的互转。
    程序如下:

    1. 首先是int转换成byte[]

     /**
         * int转换成byte[]
         * @param value
         * @return
         */
        static byte[] intToByte(int value) {
            byte[] bytes = new byte[4];
            bytes[0] = (byte) (value >> 24);
            bytes[1] = (byte) (value >> 16);
            bytes[2] = (byte) (value >> 8);
            bytes[3] = (byte) value;
            return bytes;
    
        }
    

    int转换byte[]没有什么困难,就是依次往右位移8位就得到对应的byte值。

    2. byte[]转换成int

    /**
         *
         * @param bytes
         * @return
         */
        static int byteToInt(byte[] bytes) {
            return handleComplement(bytes[3]) + (handleComplement(bytes[2]) << 8) + (handleComplement (bytes[1]) << 16) + (unhandleComplement(bytes[0]) << 24);
        }
    
        /**
         * 不处理补码
         *
         * @return
         */
        static int unhandleComplement(byte b) {
            return b;
        }
    
        /**
         * 处理补码
         *
         * @return
         */
        static int handleComplement (byte b) {
            return (b & 0xff);
        }
    

    这里要注意byte强转int是带符号的,比如有一byte为10000000,作为一个byte他的值为-128因为首位1是补码。但是我需要他作为一个int值的时候为240后面是10000000,他的值应该是256,程序中具体处理就是handleComplement(byte b)

    相关文章

      网友评论

          本文标题:工作笔记(八)

          本文链接:https://www.haomeiwen.com/subject/sitbyctx.html