byte数组和int互转

import java.nio.ByteBuffer;

public class Program
{
    public static void main(String[] args)
    {
        ByteBuffer buf = ByteBuffer.allocate(3);

        writeInt24(-113, buf);
        buf.flip();
        int i1 = readInt24(buf);

        buf.clear();
        writeInt24(9408399, buf);
        buf.flip();
        int i2 = readUnsigedInt24(buf);//readInt24(buf);

        System.out.println("i1 = " + i1);
        System.out.println("i2 = " + i2);
    }

    static void writeInt24(int val, ByteBuffer buf)
    {
        buf.put((byte)(val >> 16));
        buf.put((byte)(val >> 8));
        buf.put((byte)val);
    }

    static int readInt24(ByteBuffer buf)
    {
        byte[] data = new byte[3];
        for (int i = 0; i < 3; ++i)
            data[i] = buf.get();

        return (data[0] << 16)
                | (data[1] << 8 & 0xFF00)
                | (data[2] & 0xFF);// Java总是把byte当做有符号处理;我们可以通过将其和0xFF进行二进制与来得到有符号的整型
    }

    static int readUnsigedInt24(ByteBuffer buf)
    {
        byte[] data = new byte[3];
        for (int i = 0; i < 3; ++i)
            data[i] = buf.get();

        return (data[0] << 16 & 0xFF0000)
                | (data[1] << 8 & 0xFF00)
                | (data[0] & 0xFF);
    }
}
时间: 2024-10-07 11:24:21

byte数组和int互转的相关文章

【转】java中byte数组与int类型的转换(两种方式)----不错

原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. 第一种方法: public static byte[] int2byte(int

java中byte数组与int类型的转换(两种方式)

java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. 方法一 /** * int到byte[] * @param i * @return */ public static byte[] intToByteArray(int i) { byte[] resu

java byte数组与String互转

java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String.getBytes(charset)实现 String website = "http://www.cnblogs.com/Marydon20170307"; // String-->byte[],并指定字符集 byte[] b = website.getBytes("utf-

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

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 

[Java] java byte数组与int,long,short,byte转换

public class DataTypeChangeHelper { /** * 将一个单字节的byte转换成32位的int * * @param b *            byte * @return convert result */ public static int unsignedByteToInt(byte b) { return (int) b & 0xFF; } /** * 将一个单字节的Byte转换成十六进制的数 * * @param b *            byt

byte数组与int,long,short,byte转换 (转载)

byte数组和short数组转换 public short bytesToShort(byte[] bytes) { return ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).getShort(); } public byte[] shortToBytes(short value) { return ByteBuffer.allocate(2).order(ByteOrder.LITTLE_ENDIAN).putShort(valu

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

本帖转自:h t t p://blog.csdn.net/sunnyfans/article/details/8286906 1.int与byte[]之间的转换(类似的byte short,long型) 1 /** 2 * 将int数值转换为占四个字节的byte数组,本方法适用于(低位在前,高位在后)的顺序. 和bytesToInt()配套使用 3 * @param value 4 * 要转换的int值 5 * @return byte数组 6 */ 7 public static byte[]

Delphi Byte数组与Int String之间的相互转换

http://www.cnblogs.com/lcw/p/3352864.html string string = AnsiString = 长字符串,理论上长度不受限制,但其实受限于最大寻址范围2的32次方=4G字节: 变量Str名字是一个指针,指向位于堆内存的字符序列,字符序列起始于@Str[1],@Str[1]偏移负16个字节的空间存储着字串长度.引用计数等信息.字符序列以NULL结束. string[n] string[n] = ShortString = 短字符串,最多容纳255个字符

可序列化对象和byte[]数组之间的互转

/// <summary> /// 将可序列化对象转成Byte数组 /// </summary> /// <param name="obj">对象(对象不能为空)</param> /// <returns>返回相关数组</returns> protected static byte[] ObjectToByteArray<T>(T obj) where T : ISerializable { if (o