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

本文详细介绍了如何使用Java统一处理机顶盒程序中不同存储方式和表示长度的数据类型转换,包括从低位到高位的字节转换方法及应用,通过实例代码演示了整数到字节数组和字节数组到整数的转换过程。
unsigned char head[2];            //标识头    0x64,0xa4
unsigned char cmd;                //命令号,  0x03
unsigned char cmd_id;             //命令类型,0x00
unsigned char serial[6];          //设备序列号,MAC 地址
unsigned char cmd_len[2];         //命令长度,低位在前
unsigned char cmd_no[2];          //命令帧号,低位在前
unsigned char dev_name[48];
unsigned char tick[4];
unsigned char dev_mac[8];
unsigned char dev_ep[4];            //低字节,高字节为0
unsigned char dev_value[4];      //报警值:


开发和硬件通讯的程序,关于变量类型转换,比较麻烦. 类型相互转换,一一对应

由于机顶盒的程序开发年代久远...数值一会儿用2个byte表示,一会儿用4个byte表示.

好在存储方式固定基本都是(低位在前,高位在后)的方式,Java后台统一用int来接收了.

网上逛了下,有写好的现成的方法,偷了个懒就直接拿来用了.

贴个代码:

/**
 * 将int数值转换为占四个字节的byte数组,本方法适用于(低位在前,高位在后)的顺序。 和bytesToInt()配套使用
 * @param value
 *            要转换的int值
 * @return byte数组
 */
public static byte[] intToBytes(int value )
{
    byte[] src = new byte[4];
    src[3] =  (byte) ((value>>24) & 0xFF);
    src[2] =  (byte) ((value>>16) & 0xFF);
    src[1] =  (byte) ((value>>8) & 0xFF);
    src[0] =  (byte) (value & 0xFF);
    return src;
}
/**
 * byte数组中取int数值,本方法适用于(低位在前,高位在后)的顺序。
 *
 * @param ary
 *            byte数组
 * @param offset
 *            从数组的第offset位开始
 * @return int数值
 */
public static int bytesToInt(byte[] ary, int offset) {
    int value;
    value = (int) ((ary[offset]&0xFF)
            | ((ary[offset+1]<<8) & 0xFF00)
            | ((ary[offset+2]<<16)& 0xFF0000)
            | ((ary[offset+3]<<24) & 0xFF000000));
    return value;
}



还有(高位在前,低位在后)的转换方法的就不贴了

有需要的参考原来的文章,还是贴个地址把

http://blog.youkuaiyun.com/sunnyfans/article/details/8286906



转载于:https://my.oschina.net/u/261246/blog/479552

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值