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

作者: xh_0129 | 来源:发表于2016-11-03 09:12 被阅读5302次

    JAVA:

    1、int与byte[]之间的转换(类似的byte short,long型)

    /**

    * 将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;

    }

    /**

    * 将int数值转换为占四个字节的byte数组,本方法适用于(高位在前,低位在后)的顺序。  和bytesToInt2()配套使用

    */

    public static byte[] intToBytes2(int value)

    {

    byte[] src = new byte[4];

    src[0] = (byte) ((value>>24) & 0xFF);

    src[1] = (byte) ((value>>16)& 0xFF);

    src[2] = (byte) ((value>>8)&0xFF);

    src[3] = (byte) (value & 0xFF);

    return src;

    }

    byte[]转int

    /**

    * byte数组中取int数值,本方法适用于(低位在前,高位在后)的顺序,和和intToBytes()配套使用

    *

    * @param src

    *            byte数组

    * @param offset

    *            从数组的第offset位开始

    * @return int数值

    */

    public static int bytesToInt(byte[] src, int offset) {

    int value;

    value = (int) ((src[offset] & 0xFF)

    | ((src[offset+1] & 0xFF)<<8)

    | ((src[offset+2] & 0xFF)<<16)

    | ((src[offset+3] & 0xFF)<<24));

    return value;

    }

    /**

    * byte数组中取int数值,本方法适用于(低位在后,高位在前)的顺序。和intToBytes2()配套使用

    */

    public static int bytesToInt2(byte[] src, int offset) {

    int value;

    value = (int) ( ((src[offset] & 0xFF)<<24)

    |((src[offset+1] & 0xFF)<<16)

    |((src[offset+2] & 0xFF)<<8)

    |(src[offset+3] & 0xFF));

    return value;

    }

    第二种:

    1、int与byte[]之间的转换(类似的byte short,long型)

    /**

    * 将int数值转换为占四个字节的byte数组,本方法适用于(低位在前,高位在后)的顺序。

    * @param value

    *            要转换的int值

    * @return byte数组

    */

    public static byte[] intToBytes(int value)

    {

    byte[] byte_src = new byte[4];

    byte_src[3] = (byte) ((value & 0xFF000000)>>24);

    byte_src[2] = (byte) ((value & 0x00FF0000)>>16);

    byte_src[1] = (byte) ((value & 0x0000FF00)>>8);

    byte_src[0] = (byte) ((value & 0x000000FF));

    return byte_src;

    }

    byte[]转int

    /**

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

    }

    IOS:

    //此代码是低位在前  高位在后,

    //如果是低位在后 那就把index掉头处理,

    //这是4字节byte的处理,如果是其他字节,灵活变动下

    int value = 2222;

    Byte byte[4] = {};

    byte[0] =  (Byte) ((value>>24) & 0xFF);

    byte[1] =  (Byte) ((value>>16) & 0xFF);

    byte[2] =  (Byte) ((value>>8) & 0xFF);

    byte[3] =  (Byte) (value & 0xFF);

    打印出来的byte[0],byte[1]....是十进制数    不要认为是十六进制。

    相关文章

      网友评论

      • 芷依儿:ios byte怎么转换short,不是byte数组,是byte *byte这种类型,我找了好久都没有找到解决办法,大神能不能指点一下。。
      • __shunshun__:这哪儿是iOS 代码啊,这是java啊
        工藤新er:@陌上花开下雨天
        - (nullable const void *)intToByte:(int)value
        {
        Byte *byte= (Byte*)malloc(4);

        byte[0] =(Byte) ((value>>24) & 0xFF);

        byte[1] =(Byte) ((value>>16) & 0xFF);

        byte[2] =(Byte) ((value>>8) & 0xFF);

        byte[3] =(Byte) (value & 0xFF);


        return byte;
        }
        沐时:哥们,你搞出来了吗?求指教呀
      • 刘超_a594:public static int bytesToInt(byte[] src, int offset) 不能直接放在oc工程里面?

      本文标题:byte[]数组和int之间的转换 (ios)

      本文链接:https://www.haomeiwen.com/subject/ercjuttx.html