byte[]数组和int 之间的转换

转载 2015年11月21日 20:55:54

&: 按位与,当两位同时为1时才返回1。 1011 1010 & 1111 1111 = 1011 1010,还是得到是原值(类似位置对应)。

|:按位或,只要有一位为1即可返回1。1011 1010 0000 0000 | 1011 0101 = 1011 1010 1011 0101(字节拼接)

>>:右移运算符,<<:左移运算符,移出去的被截断,空出来的位以符号位进行填充。左移n位相当于乘以2的n次方,右移n位相当于除以2的n次方

package demos;

/**
 * Created by jiaobuchong on 2015/11/21.
 */
public class BytesToInt {
    /**
     * 低位在前, 高位在后, 将整型数字的每个字节保存到数组中
     *
     * @param value
     * @return
     */
    public static byte[] intToBytes(int value) {
        byte[] des = new byte[4];
        des[0] = (byte) (value & 0xff);  // 低位(右边)的8个bit位
        des[1] = (byte) ((value >> 8) & 0xff); //第二个8 bit位
        des[2] = (byte) ((value >> 16) & 0xff); //第三个 8 bit位
        /**
         * (byte)((value >> 24) & 0xFF);
         * value向右移动24位, 然后和0xFF也就是(11111111)进行与运算
         * 在内存中生成一个与 value 同类型的值
         * 然后把这个值强制转换成byte类型, 再赋值给一个byte类型的变量 des[3]
         */
        des[3] = (byte) ((value >> 24) & 0xff); //第4个 8 bit位
        return des;
    }

    /**
     * 将上面转成的byte数组转换成int原始值 
     * @param des
     * @param offset
     * @return
     */
    public static int bytesToInt(byte[] des, int offset) {
        int value;
        value = (int) (des[offset] & 0xff
                | ((des[offset + 1] & 0xff) << 8)
                | ((des[offset + 2] & 0xff) << 16)
                | (des[offset + 3] & 0xff) << 24);
        return value;
    }

    public static void main(String[] args) {
        byte[] res = intToBytes(30);
        System.out.println(bytesToInt(res, 0));  //30
    }
}
望同行多多指教。

参考博客: http://blog.csdn.net/sunnyfans/article/details/8286906


byte[]数组和int之间的转换

这里简单记录下两种转换方式: 第一种: 1、int与byte[]之间的转换(类似的byte short,long型) /** * 将int数值转换为占四个字节的byte数组,本...
  • Sunnyfans
  • Sunnyfans
  • 2012年12月12日 15:40
  • 133728

Java 中 byte、byte 数组和 int、long 之间的转换

Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (b...
  • defonds
  • defonds
  • 2013年04月10日 14:34
  • 80583

在C# 中将byte转换为int和int转换为byte

在c#中简单的int和byte数组互相转换  int   s   =   100;    byte[]   shi   =   System.BitConverter.GetBytes(s);    ...
  • emeer
  • emeer
  • 2008年01月22日 20:06
  • 78575

java byte转int 互相转换原理详解

java byte转int 互相转换原理详解 原码,反码,补码概念
  • wojiuai2093
  • wojiuai2093
  • 2016年03月02日 14:56
  • 3771

java中byte数组与int类型的转换(两种方式)

java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送、者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形...
  • z69183787
  • z69183787
  • 2014年08月14日 21:20
  • 21205

byte[]数组和int之间的转换

这里简单记录下两种转换方式: 第一种: 1、int与byte[]之间的转换(类似的byte short,long型) [java] view plain copy print? /...
  • lixin88
  • lixin88
  • 2017年02月20日 10:39
  • 551

byte[]数组和int之间的转换

这里简单记录下两种转换方式: 第一种: 1、int与byte[]之间的转换(类似的byte short,long型) [java] view plaincopy /**     ...
  • u012861467
  • u012861467
  • 2015年12月03日 21:34
  • 1453

int和byte之间的转换

int型32位 byte型8位 例如:int类型:97 则二进制表示为:00000000 00000000 00000000 01100001   Java语言 /*将int转为低字节在前,高字节在后...
  • qq_28468727
  • qq_28468727
  • 2016年09月11日 01:06
  • 8782

java中byte数组与int类型的转换(两种方式)

java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送、者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形...
  • zhouyong0
  • zhouyong0
  • 2012年10月16日 19:51
  • 36756

整型变量(int)与字节数组(byte[])的相互转换

// int2byte.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include /* #define MAKEWORD(a, b) ((WORD...
  • hemmingway
  • hemmingway
  • 2013年03月08日 23:37
  • 5764
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:byte[]数组和int 之间的转换
举报原因:
原因补充:

(最多只允许输入30个字)