zoukankan      html  css  js  c++  java
  • java基本数据类型转换成byte[]数组

    import java.io.UnsupportedEncodingException; 
     
    public class ConToByte { 
     
        /**
         * double转换byte
         * @param  arr  byte[]
         * @param  param    double   double类型的参数
         * @param  index  int
         */ 
        public static void putDouble(byte[] arr, double param, int index) { 
            int len = (index - 1) + 8; 
            int arrLen = arr.length; 
            boolean b = isOutOfArrLength(arrLen, len);   //判断当前数组长度是否大于转换的数组长度  
            Long l = Double.doubleToLongBits(param); 
            if (b) {  
                for (int i = 7; i >=0; i--) { 
                    arr[index + i] = l.byteValue(); 
                    l = l >> 8; 
                } 
            } else { 
                // 如果当前数组长度小于转换的数组长度,就根据index截取转换的数组元素  
                 l = l>>(8*index); 
                for(int j= arrLen-index-1;j>=0;j--){  
                    arr[index+j] = l.byteValue(); 
                    l = l>>8; 
                } 
            } 
     
        } 
     
        /**
         * float转换byte
         * 
         * @param  arr   byte[]
         * @param  param    float  float类型的参数
         * @param  index  int
         */ 
        public static void putFloat(byte[] arr, float param, int index) { 
            int len = (index - 1) + 4; 
            int arrLen = arr.length; 
            boolean b = isOutOfArrLength(arrLen, len);    //判断当前数组长度是否大于转换的数组长度  
            int l = Float.floatToIntBits(param); 
            if (b) { 
                for (int i = 3; i >=0; i--) { 
                    arr[index + i] = new Integer(l).byteValue(); 
                    l = l >> 8; 
                } 
            } else { 
                // 如果当前数组长度小于转换的数组长度,就根据index截取转换的数组元素  
                l = l>>(8*index); 
                for(int j=arrLen-index-1;j>=0;j--){  
                    arr[index+j] =  new Integer(l).byteValue(); 
                     l =l>>8; 
                } 
            } 
     
        } 
     
        /**
         * 字符到字节转换
         * 
         * @param  arr   byte[]
         * @param  ch     char   char类型的参数
         * @param  index   int
         * @return
         */ 
        public static void putChar(byte[] arr, char ch, int index) { 
            int len = (index - 1) + 4; 
            boolean b = isOutOfArrLength(arr.length, len);      //判断当前数组长度是否大于转换的数组长度  
            if (b) { 
                int temp = (int) ch; 
                for (int i = 1; i >=0; i--) { 
                    arr[index + i] = new Integer(temp & 0xff).byteValue(); 
                    temp = temp >> 8; 
                } 
            } 
     
        } 
     
        /**
         * 转换long型为byte数组
         * 
         * @param  arr  byte[]
         * @param  param    long
         * @param  index  int
         */ 
        public static void putLong(byte[] arr, long param, int index) { 
            int len = (index - 1) + 8; 
            int arrLen = arr.length; 
            boolean b = isOutOfArrLength(arrLen, len);    //判断当前数组长度是否大于转换的数组长度  
            if (b) { 
                arr[index + 0] = (byte) ((param >> 56) & 0xff); 
                arr[index + 1] = (byte) ((param >> 48) & 0xff); 
                arr[index + 2] = (byte) ((param >> 40) & 0xff); 
                arr[index + 3] = (byte) ((param >> 32) & 0xff); 
                arr[index + 4] = (byte) ((param >> 24) & 0xff); 
                arr[index + 5] = (byte) ((param >> 16) & 0xff); 
                arr[index + 6] = (byte) ((param >> 8) & 0xff); 
                arr[index + 7] = (byte) (param & 0xff); 
            } else { 
                // 如果当前数组长度小于转换的数组长度,就根据index截取转换的数组元素  
                param = param >> (8*index); 
                  for(int i=arrLen-index-1;i>=0;i--){ 
                      arr[index+i] =  (byte) (param & 0xff); 
                      param = param >> 8; 
                  } 
            } 
     
        } 
     
        /**
         * int类型转换成byte数组
         * 
         * @param arr byte[]
         * @param param  int int类型的参数
         * @param index  int
         */ 
        public static void putInt(byte[] arr, int param, int index) { 
            int len = (index - 1) + 4; 
            boolean b = isOutOfArrLength(arr.length, len);     //判断当前数组长度是否大于转换的数组长度  
            if (b) { 
                arr[index + 0] = (byte) ((param >> 24) & 0xff); 
                arr[index + 1] = (byte) ((param >> 16) & 0xff); 
                arr[index + 2] = (byte) ((param >> 8) & 0xff); 
                arr[index + 3] = (byte) (param & 0xff); 
            } 
        } 
     
        /**
         * short类型转换成byte数组
         * 
         * @param arr   byte[]
         * @param param  short
         * @param index  int
         */ 
        public static void putShort(byte[] arr, short param, int index) { 
            int len = (index - 1) + 2; 
            boolean b = isOutOfArrLength(arr.length, len);        //判断当前数组长度是否大于转换的数组长度  
            if (b) {  
                arr[index + 0] = (byte) ((param >> 8) & 0xff); 
                arr[index + 1] = (byte) (param & 0xff); 
            } 
        } 
     
        /**
         * 字符串转换成byte数组
         * 
         * @param arr  byte[]
         * @param str  String
         * @param index  int
         * @throws java.io.UnsupportedEncodingException
         */ 
        public static void putString(byte[] arr, String str, int index) { 
     
            try { 
                byte[] bb = str.getBytes("GBK"); 
                int len = index + bb.length; 
                boolean b = isOutOfArrLength(arr.length, len); 
                if (b) { 
                    for (int i = 0; i < bb.length; i++) { 
                        arr[index + i] = bb[i]; 
                    } 
                } else { 
                    // 如果当前数组长度小于转换的数组长度,就根据index截取转换的数组元素  
                    for(int j=0;j<arr.length-index;j++){ 
                        arr[index+j] = bb[j]; 
                    } 
                } 
            } catch (UnsupportedEncodingException e) { 
                e.printStackTrace(); 
            } 
     
        } 
     
        /**
         * 判断数组下标是否越界
         * 
         * @param arrLength
         *            数组总长度
         * @param index
         *            数组偏移量
         * @return
         */ 
        public static boolean isOutOfArrLength(int arrLength, int index) { 
            boolean b; 
            if (arrLength > index) { 
                b = true; 
            } else { 
                b = false; 
            } 
            return b; 
        } 

  • 相关阅读:
    read-uncommited 下脏读的实现
    MySQL 加锁处理分析【重点】
    Next-key locking是如何解决幻读(当前读)问题的
    spring ioc
    讨论 update A set number=number+ ? where id=?的原子性 (含数据库原理)
    PESSIMISTIC_READ & PESSIMISTIC_WRITE 与 共享锁 & 排它锁
    innodb当前读 与 快照读 and rr级别是否真正避免了幻读
    java finalize及实践
    uva 539 The Settlers of Catan
    zoj 1016 Parencodings
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4694934.html
Copyright © 2011-2022 走看看