java byte数组与int,long,short,byte的转换实现方法

实例如下:

public class DataTypeChangeHelper {
  /**
   * 将一个单字节的byte转换成32位的int
   *
   * @param b
   *      byte
   * @return convert result
   */
  public static int unsignedByteToInt(byte b) {
    return (int) b & 0xFF;
  } 

  /**
   * 将一个单字节的Byte转换成十六进制的数
   *
   * @param b
   *      byte
   * @return convert result
   */
  public static String byteToHex(byte b) {
    int i = b & 0xFF;
    return Integer.toHexString(i);
  } 

  /**
   * 将一个4byte的数组转换成32位的int
   *
   * @param buf
   *      bytes buffer
   * @param byte[]中开始转换的位置
   * @return convert result
   */
  public static long unsigned4BytesToInt(byte[] buf, int pos) {
    int firstByte = 0;
    int secondByte = 0;
    int thirdByte = 0;
    int fourthByte = 0;
    int index = pos;
    firstByte = (0x000000FF & ((int) buf[index]));
    secondByte = (0x000000FF & ((int) buf[index + 1]));
    thirdByte = (0x000000FF & ((int) buf[index + 2]));
    fourthByte = (0x000000FF & ((int) buf[index + 3]));
    index = index + 4;
    return ((long) (firstByte << 24 | secondByte << 16 | thirdByte << 8 | fourthByte)) & 0xFFFFFFFFL;
  } 

  /**
   * 将16位的short转换成byte数组
   *
   * @param s
   *      short
   * @return byte[] 长度为2
   * */
  public static byte[] shortToByteArray(short s) {
    byte[] targets = new byte[2];
    for (int i = 0; i < 2; i++) {
      int offset = (targets.length - 1 - i) * 8;
      targets[i] = (byte) ((s >>> offset) & 0xff);
    }
    return targets;
  } 

  /**
   * 将32位整数转换成长度为4的byte数组
   *
   * @param s
   *      int
   * @return byte[]
   * */
  public static byte[] intToByteArray(int s) {
    byte[] targets = new byte[2];
    for (int i = 0; i < 4; i++) {
      int offset = (targets.length - 1 - i) * 8;
      targets[i] = (byte) ((s >>> offset) & 0xff);
    }
    return targets;
  } 

  /**
   * long to byte[]
   *
   * @param s
   *      long
   * @return byte[]
   * */
  public static byte[] longToByteArray(long s) {
    byte[] targets = new byte[2];
    for (int i = 0; i < 8; i++) {
      int offset = (targets.length - 1 - i) * 8;
      targets[i] = (byte) ((s >>> offset) & 0xff);
    }
    return targets;
  } 

  /**32位int转byte[]*/
  public static byte[] int2byte(int res) {
    byte[] targets = new byte[4];
    targets[0] = (byte) (res & 0xff);// 最低位
    targets[1] = (byte) ((res >> 8) & 0xff);// 次低位
    targets[2] = (byte) ((res >> 16) & 0xff);// 次高位
    targets[3] = (byte) (res >>> 24);// 最高位,无符号右移。
    return targets;
  } 

  /**
   * 将长度为2的byte数组转换为16位int
   *
   * @param res
   *      byte[]
   * @return int
   * */
  public static int byte2int(byte[] res) {
    // res = InversionByte(res);
    // 一个byte数据左移24位变成0x??000000,再右移8位变成0x00??0000
    int targets = (res[0] & 0xff) | ((res[1] << 8) & 0xff00); // | 表示安位或
    return targets;
  }
} 

以上就是小编为大家带来的java byte数组与int,long,short,byte的转换实现方法全部内容了,希望大家多多支持我们~

(0)

相关推荐

  • java中long数据类型转换为int类型

    由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: 一.强制类型转换 long ll = 300000; int ii = (int)ll; 二.调用intValue()方法 long ll = 300000; int ii= new Long(ll).intValue(); 三.先把long转换成字符串String,然后在转行成Integer long ll = 300000; i

  • Java编程long数据类型的使用问题

    在Java编程中经常遇到一些整数类型的使用问题,下面我们来看看长整形数据使用问题. 今天在写一个java线程的时候,想让线程休眠720小时候继续执行,代码如下: long runSperiod = 720 * 60 * 60 * 1000; Thread.sleep(runSperiod) 启动线程测试的时候,发现线程并没有按照预想的720小时候后执行,而是不停在执行,最后跟踪代码发现 runSperiod 的值时负数.仔细研究后发现,java在处理几个数相乘时,如果几个数都是 int 类型,那

  • 谈谈Java中整数类型(short int long)的存储方式

    在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解. 其他的三种类型如下: 1. 基本类型:short 二进制位数:16 包装类:java.lang.Short 最小值:Short.MIN_VALUE=-32768 (-2的15此方) 最大值:Short.MAX_VALUE=32767 (2的15次方-1) 2. 基本类型:int 二进制位数:32 包装类:java.lang.Integer 最小值:Integer.M

  • java int转byte和long转byte的方法

    在网络编程中,出于节约带宽或者编码的需要,通常需要以原生方式处理long和int,而不是转换为string. public class ByteOrderUtils { public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[3] = (byte) (res & 0xff);// 最低位 targets[2] = (byte) ((res >> 8) & 0xff);// 次低

  • Java中byte、byte数组与int、long的转换详解

    一.Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) x; } public static int byteToInt(byte b) { //Java 总是把 byte 当做有符处理:我们可以通过将其和 0xFF 进行二进制与得到它的无符值 return b & 0xFF; } 测试代码: //测试 int 转 byte int int0 = 234

  • Java中long类型与Long类型的区别和大小比较详解

    前言 最近在学习java,接触到了long类型,发现网上这方面的资料较乱,所以决定总结一下,在Java中我们经常要做一些判断,而对于判断的话,用的最多的便是">"."=="."<"的比较,这里我们进行一个Long类型数据和long类型数据的比较大小的讲解.话不多说了,来一起看看详细的介绍吧. Java中Long和long的区别 Java的数据类型分为两种: 1.基本类型:byte(8),short(16),int(32),long(6

  • java byte数组与int,long,short,byte的转换实现方法

    实例如下: public class DataTypeChangeHelper { /** * 将一个单字节的byte转换成32位的int * * @param b * byte * @return convert result */ public static int unsignedByteToInt(byte b) { return (int) b & 0xFF; } /** * 将一个单字节的Byte转换成十六进制的数 * * @param b * byte * @return conv

  • 基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xf

  • Java任意长度byte数组转换为int数组的方法

    前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些.这里简单说明一下byte数组和int的转换吧. 总所周知,int类型数据在Java中占据32 bit,byte占据8 bit,这样的话,正常情况下4个byte可以转换成一个int类型数据. 当然,不正常情况下,3个byte或者2个byte甚至1个byte都可以转换为int数据,只需要高位补上就行.

  • PHP数组与对象之间使用递归实现转换的方法

    本文实例讲述了PHP数组与对象之间使用递归实现转换的方法.分享给大家供大家参考.具体实现方法如下: 这里涉及一些简单的对象与数组的相互转换的问题,采用递归写了两个方法如下: function arrayToObject($e){ if( gettype($e)!='array' ) return; foreach($e as $k=>$v){ if( gettype($v)=='array' || getType($v)=='object' ) $e[$k]=(object)arrayToObj

  • implicitly convert type 'int' to 'short'的原因与解决方法

    看看下面的代码: 复制代码 代码如下: sbyte sba, sbb,sbv; sba = 1; sbb = 2; sbv = sba + sbb; byte ba, bb, bv; ba = 1; bb = 2; bv = ba + bb; short sa, sb, sv; sa = 1; sb = 2; sv = sa + sb; ushort usa, usb, usv; usa = 1; usb = 2; usv = usa + usb; 你觉得这段代码能否正确执行?结果会怎样? 结果

  • implicitly convert type 'int' to 'short'的原因与解决方法

    看看下面的代码: 复制代码 代码如下: sbyte sba, sbb,sbv; sba = 1; sbb = 2; sbv = sba + sbb; byte ba, bb, bv; ba = 1; bb = 2; bv = ba + bb; short sa, sb, sv; sa = 1; sb = 2; sv = sa + sb; ushort usa, usb, usv; usa = 1; usb = 2; usv = usa + usb; 你觉得这段代码能否正确执行?结果会怎样? 结果

  • Java中Color和16进制字符串互相转换的方法

    1.原理 主要是调用了toHexString(将int类型转为16进制字符串).parseInt(将字符串解析为int)这两个方法. 2.代码 public static void main(String[] args) { String hexString = colorToHexValue(Color.RED); System.out.println("16进制字符串:" + hexString); Color color = fromStrToARGB(hexString); S

  • java整数与byte数组的转换实现代码

    java整数与byte数组的转换实现代码            这里对java中整数与byte数组的转换进行了实现,平时的项目中很少用的到,但是特定需求的时候还是需要的,这里就记录下,亲测可用, 实现代码: public class NumberUtil { /** * int整数转换为4字节的byte数组 * * @param i * 整数 * @return byte数组 */ public static byte[] intToByte4(int i) { byte[] targets =

  • C#操作Byte数组和十六进制进行互转

    一.Byte 数组转十六进制字符串 /// <summary> /// Byte 数组转十六进制字符串 /// </summary> /// <param name="Bytes"></param> /// <returns></returns> public static string ByteToHex(byte[] Bytes) { string str = string.Empty; foreach (by

随机推荐