现在的位置: 首页 > 综合 > 正文

贴一个按位转换类型的方法

2012年04月20日 ⁄ 综合 ⁄ 共 1242字 ⁄ 字号 评论关闭

   最近一个项目用到向终端发送数据的方法,终端是16位(4字节)的。所以需要把Int型转换为32位的,在终端按照4个字节读出,写了下面的转换方法:

 1public static class MyMath
 2{
 3    /**
 4     * 把一个整数转化为byte array
 5     * 
 6     * @param num
 7     *            待转化的整数
 8     * @param len
 9     *            长度
10     * @return byte array
11     */

12    public static  byte[] intToBytes(int num, int len)
13    {
14        byte[] b = new byte[len];
15        int sw = ((len - 1* 8);
16        int mask = (0xff << sw);
17        for (int l = 0; l < len; l++)
18        {
19            b[l] = (byte)(((uint)num & mask) >> sw);
20            sw -= 8;
21            mask >>= 8;
22        }

23        return b;
24    }

25
26    /**
27     * 把byte [] 转化为int
28     * 
29     * @param b
30     *            byte[]
31     * @param offset
32     *            开始位置
33     * @param size
34     *            长度
35     * @return int
36     */

37   public static int bytesToInt(byte[] b, int offset, int size) {
38        int num = 0;
39        int sw = 8 * (size - 1);
40        for (int loop = 0; loop < size; loop++{
41            num |= ((int) b[offset + loop] & 0x00ff<< sw;// 整数太大,清零
42            sw -= 8;
43        }

44        return (num);
45    }

46}

测试:

 int iPut = 44;
        byte[] b = MyMath.intToBytes(iPut, 4);

        int i = MyMath.bytesToInt(b, 0, 4);

抱歉!评论已关闭.