相关文章推荐
爱看球的太阳  ·  Configure the SEG V2·  1 年前    · 
没人理的豆芽  ·  asp.net mvc - Using ...·  1 年前    · 
潇洒的葡萄  ·  【前端】JavaScript ...·  1 年前    · 
public void test(){
        byte[] longArray = ByteBuffer.allocate(8).putLong(Long.MAX_VALUE).array();
        byte[] intArray = ByteBuffer.allocate(4).putInt(Integer.MAX_VALUE).array();
        byte[] shortArray = ByteBuffer.allocate(2).putShort(Short.MAX_VALUE).array();
        byte[] doubleArray = ByteBuffer.allocate(8).putDouble(Double.MAX_VALUE).array();
        byte[] floatArray = ByteBuffer.allocate(4).putFloat(Float.MAX_VALUE).array();
        byte[] charArray = ByteBuffer.allocate(2).putChar(Character.MAX_VALUE).array();
        long aLong = getByteBufferAndFlip(longArray).getLong();
        int anInt = getByteBufferAndFlip(intArray).getInt();
        short aShort = getByteBufferAndFlip(shortArray).getShort();
        double aDouble = getByteBufferAndFlip(doubleArray).getDouble();
        float aFloat = getByteBufferAndFlip(floatArray).getFloat();
        char aChar = getByteBufferAndFlip(charArray).getChar();
        System.out.println(aLong + " " + (aLong == Long.MAX_VALUE));
        System.out.println(anInt + " " + (anInt == Integer.MAX_VALUE));
        System.out.println(aShort + " " + (aShort == Short.MAX_VALUE));
        System.out.println(aDouble + " " + (aDouble == Double.MAX_VALUE));
        System.out.println(aFloat + " " + (aFloat == Float.MAX_VALUE));
        System.out.println(aChar + " " + (aChar == Character.MAX_VALUE));
    private ByteBuffer getByteBufferAndFlip(byte[] bytes){
        ByteBuffer buffer = ByteBuffer.allocate(bytes.length).put(bytes);
        buffer.flip();  //一定要先执行flip再get,否则会报错
        return buffer;
                    public void test(){        byte[] longArray = ByteBuffer.allocate(8).putLong(Long.MAX_VALUE).array();        byte[] intArray = ByteBuffer.allocate(4).putInt(Integer.MAX_VALUE).array();        byte[...
				
NFD在传送大量数据的时候,比如我要传输大文件,或者各类文件的时候,只能使用Blob,但是当接收方接收数据的时候,Blob只能转为ByteBuffer,如何转化为byte[]呢?在查看API文档的时候,发现有个array()的函数,但是被坑惨了!!!根本读不出来好嘛!!! 在stackoverflow上找到问题: If hasArray() reports false then,
int num = 1; // int need 4 bytes, default ByteOrder.BIG_ENDIAN byte[] result = ByteBuffer.allocate(4).putInt(number).array(); byte[... ByteArrayOutputStream bos=new ByteArrayOutputStream(8); DataOutputStream dos=new DataOutputStream(bos); dos.writ
缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区: 使用缓冲区有这么两个好处: 1、减少实际的物理读写次数 2、缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的次数 举个简单的例子,比如A地有1w块砖要搬到B地 由于没有工具(缓冲区),我们一次只能搬一本,那么就要搬1w次(
ByteBuffer 直接缓冲区和非直接缓冲区 ByteBuffer 在平时工作中可能用到的不多,但是面试中经常会被问到。本文总结了一些关于 ByteBuffer 的用法和相关 API 介绍。 下面是创建ByteBuffer对象的几种方式: 这里我们先使用allocate方法创建一个容量为4的ByteBuffer对象,然后使用putInt方法将int类型的数据写入到ByteBuffer对象中,最后调用array方法将ByteBuffer对象转换byte数组。 需要注意的是,这里byte数组的顺序为Big-endian(大端序列),即高位字节在前,低位字节在后。如果需要使用Little-endian(小端序列),可以使用order方法设置字节序列,例如: ```java byte[] bytes = ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(num).array(); 这样就可以得到Little-endian序列的byte数组