zoukankan      html  css  js  c++  java
  • 贴一个按位转换类型的方法

       最近一个项目用到向终端发送数据的方法,终端是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);

  • 相关阅读:
    【SQL】CASE与DECODE
    【SQL】通过rowid查找及删除重复记录
    【SQL】联合语句
    【PLSQL】游标
    【SQL】IN、EXISTS和表连接三者的效率比较
    【SQL】CONNECT BY 层次化查询
    【SQL】MERGE
    【SQL】多表查询
    【Python算法】遍历(Traversal)、深度优先(DFS)、广度优先(BFS)
    【Python算法】归纳、递归、归简
  • 原文地址:https://www.cnblogs.com/onekey/p/307174.html
Copyright © 2011-2022 走看看