java中int与byte相互转换

1:int和byte的关系

  在java中,int整形变量是32位的,而byte是8位的,他们之间的转换有一定的策略和讲究。

1.1:int 到byte

首先我们实现int和byte之间的转换,思路如下:

  1. 创建一个byte数组,长度为4。byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位,
  2. 在将int数据右移24位,然后与0xFF相与即可得到byte[0]。
  3. 在将int数据右移16位,然后与0xFF相与即可得到byte[1]。
  4. 在将int数据右移8位,然后与0xFF相与即可得到byte[2]。
  5. 在将int数据右移0位,然后与0xFF相与即可得到byte[3]。
  6. 输出byte[]数组即可。

1.2:byte 到int

首先我们实现byte和int之间的转换,思路如下:

  1. 输入一个byte数组,长度为4。byte[0]是最高位,byte[1]是次高位,byte[2]是次次高位,byte[3]是最低位,
  2. 创建一个int型变量sum,作为byte到int的结果。
  3. 用一个for(int i=0;i<4;i++)的循环。每次将(3-i)*8的值,作为该byte的权重。
  4. sum = sum + byte[i]<<(3-i)*8。重复3-4即可。
  5. return sum即可。

2:代码实现

  /**
     * int到byte[] 由高位到低位
     * @param i 需要转换为byte数组的整行值。
     * @return byte数组
     */
    public static byte[] intToByteArray(int i) {
        byte[] result = new byte[4];
        result[0] = (byte)((i >> 24) & 0xFF);
        result[1] = (byte)((i >> 16) & 0xFF);
        result[2] = (byte)((i >> 8) & 0xFF);
        result[3] = (byte)(i & 0xFF);
        return result;
    }

    /**
     * byte[]转int
     * @param bytes 需要转换成int的数组
     * @return int值
     */
    public static int byteArrayToInt(byte[] bytes) {
        int value=0;
        for(int i = 0; i < 4; i++) {
            int shift= (3-i) * 8;
            value +=(bytes[i] & 0xFF) << shift;
        }
        return value;
    }

原文地址:https://www.cnblogs.com/dazhu123/p/12558035.html

时间: 2024-11-09 16:31:27

java中int与byte相互转换的相关文章

java 中 image 和 byte[] 相互转换

java 中 image 和 byte[] 相互转换可恶的…………其实也挺好的 只是把好不容易写出来的东西记下来,怕忘了…… 下面,我来介绍一个简单的 byte[] to image, 我们只需要一个存储了图片信息的二进制串(byte[]) 然后,这样: InputStream buffin = new ByteArrayInputStream(/*二进制串*/,                                               /*起始位置*/,           

java中int与byte数组互转代码详细分析

转载请注明出处:http://blog.csdn.net/tang9140/article/details/43404385 在java中,可能会遇到将int转成byte[]数组,或者将byte[]数组转成int的情况.下面我们来思考下怎么实现? 首先,分析int在java内存中的存储格式. 众所周知,int类型在内存中占4个字节,采用补码方式存储(假如对原码.反码.补码不熟悉,请查阅相关资料).举例: 整型-128对应内存中的二进制值为 整型128对应内存中的二进制值为 然后,考虑如何把int

Java中Int转byte分析

针对声明变量 int i = 3,j = 8; int占4个字节,i = 3 在Java二进制表示: 00000000 00000000 00000000 00000011 j = 8 在Java二进制表示: 00000000 00000000 00000000 00001000 下面进行运算: 1.按位与:每一位进行按位与运算,规则是 1&1 = 1:1&0 = 0:0&1 = 0:0&0 = 0: 所以i & j = 0 2.右位移或者左位移 i>>

013、Java中int类型转换byte

01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String[] args) { int num = 130; // 此范围超过了byte定义 byte x = (byte) num; // 由int变为byte System.out.println(x); } } 02.效果如下: 知识有价,如果您认为这篇文

转:Java中String与byte[]的转换

fuzhaoyang 转:Java中String与byte[]的转换 原文地址:http://blog.csdn.net/llwan/article/details/7567906 String s = "fs123fdsa";//String变量 byte b[] = s.getBytes();//String转换为byte[] String t = new String(b);//bytep[]转换为String 做JAVA经常会碰到中文乱码问题,还有各种编码的问题,特别是Stri

JAVA中int、String的类型转换

int -> String int i=12345;String s="";第一种方法:s=i+"";第二种方法:s=String.valueOf(i);这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢? String -> int s="12345";int i;第一种方法:i=Integer.parseInt(s);第二种方法:i=Integer.valueOf(s).intValue();这两种方法有什么区别

java中int取值范围是怎么计算的?

首先jdk中定义int占4个字节 ===> 32位(后面全部的计算都是以此为根据的) 32位就是jvm仅仅给分配32个格子的空间,用以存放数据. 总所周知计算机中用0和1存放数据. 那么,32个格子中放满0或1的方法 有2的32次方种: 所以.这32个格子中.或者说32位的空间能标识10进制的数字: 最小 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 最大 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

java中int,float,long,double取值范围,内存泄露

java中int,float,long,double取值范围是多少? 写道 public class TestOutOfBound { public static void main(String[] args) { System.out.println(Integer.MAX_VALUE-(-Integer.MAX_VALUE)); //内存溢出System.out.println(Integer.MAX_VALUE); //2的31次方-1,10个数位,正的20亿左右,用在钱上面不一定够Sy

Java中基本数据类型byte,short,char,int,long,float,double

部分内容转自:java 彻底理解 byte char short int float long double 首先说byte: 这段是摘自jdk中 Byte.java中的源代码: 1 /** 2 * A constant holding the minimum value a <code>byte</code> can 3 * have, -2<sup>7</sup>. 4 */ 5 public static final byte MIN_VALUE =