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; 
    } 
}

java基本数据类型转换成byte[]数组的更多相关文章

  1. 聊聊java基础,int值强制类型转换成byte

    聊聊java基础,int值强制类型转换成byte 知识点:byte.short.char在表达式中会自动提升为int 之前做一个应用时,打印IP地址,因为是用4个byte存储的,所以打印的时候值范围是 ...

  2. JAVA将文件转换成byte数组(byte[])

    /** * 将文件转换成byte数组 * @param filePath 文件File类 通过new File(文件路径) * @return byte数组 */ public static byte ...

  3. JAVA中文件与Byte数组相互转换的方法

    JAVA中文件与Byte数组相互转换的方法,如下: public class FileUtil { //将文件转换成Byte数组 public static byte[] getBytesByFile ...

  4. Map 转换成byte[] 数组

    把Map转换成byte数组,使用 ByteArrayOutputStream和ObjectOutputStream Map<String,String> map = new HashMap ...

  5. 将文件转换成byte[]数组

    代码 /// <summary> /// 将文件转换成byte[] 数组 /// </summary> /// <param name="fileUrl&quo ...

  6. Java中字符串和byte数组之间的相互转换

    1.将字符转换成byte数组 String str = "罗长"; byte[] sb = str.getBytes(); 2.将byte数组转换成字符 byte[] b={(by ...

  7. PHP实现INT型,SHORT型,STRING转换成BYTE数组

    实现PHP实现INT型,SHORT型,STRING转换成BYTE数组的转化: class Bytes { public static function integerToBytes($val) { $ ...

  8. 将文件File转换成byte数组

    代码如下: /** * 将文件转换成byte数组 * @param filePath * @return */ public static byte[] File2byte(File tradeFil ...

  9. Java String类型转换成Date日期类型

    插入数据库时,存入当前日期,需要格式转换 import java.text.SimpleDateFormat; formatter = new SimpleDateFormat( "yyyy ...

随机推荐

  1. python 安装ssh和Scrapy

    在Python中没有专用的SSH模块,这需要手动的安装模块才行.Python中使用SSH需要用到OpenSSH,而OpenSSH依赖于paramiko模块,paramiko模块又依赖于pycrypto ...

  2. poj 3176 Cow Bowling(区间dp)

    题目链接:http://poj.org/problem?id=3176 思路分析:基本的DP题目:将每个节点视为一个状态,记为B[i][j], 状态转移方程为 B[i][j] = A[i][j] + ...

  3. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  4. BZOJ 1216: [HNOI2003]操作系统( 优先队列 )

    按题意用priority_queue模拟即可 ---------------------------------------------------------------------- #inclu ...

  5. mysql自动备份(windows)

    许多时候,为了数据安全,我们的mysql数据库需要定期进行备份,下面介绍两种在windows下自动备份方法: 1.复制date文件夹备份 ============================ 例子 ...

  6. d3.js入门1:安装配置

    D3 是当前流行的数据可视化工具,通过本文能有对 D3 有一个初步认识. 1. D3 是什么 D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文档.听名 ...

  7. Chapter 2.策略模式

    首先贴一段代码: package xiao; import java.util.Scanner; class CashSuper{    private int num;    private dou ...

  8. 有什么很好的软件是用 Qt 编写的?

    作者:尘中远链接:http://www.zhihu.com/question/19630324/answer/19365369来源:知乎 一些出名的例子如下:(wiki搬运) 3DSlicer, a ...

  9. Flask web开发 处理POST请求(登录案例)

    本文我们以一个登录例子来说明Flask对 post请求的处理机制. 1.创建应用目录,如 mkdir   example cd example 2.在应用目录下创建  run.py文件,内容如下 fr ...

  10. Android学习笔记:如何高效显示图片,避免内存溢出 和 ImageView无法显示大尺寸的图片

    因为手机的内存资源是有限的,每个app可使用的内存是受限的.而现在采用高分辨率拍的照片往往很大.如果加载时不注意方法,很有可能会引起java.lang.OutofMemoryError: bitmap ...