我们可以从ByteBuffer中产生出不同类型值的方法
public class Test{
public static final int BSIZE=1024;
public static void main()
{
ByteBuffer bb=ByteBuffer.allocate(BSIZE);
int i=0;
while(i++<bb.limit())
if(bb.get()!=0)
System.out.print("nozero");
System.out.println("i ="+i);
bb.rewind();
bb.asShortBuffer().put((short)471142);
System.out.print(bb.getShort());
bb.rewind();
bb.asIntBuffer().put(9947142);
System.out.print(bb.getInt());
bb.rewind();
bb.asLongBuffer().put(99471142);
System.out.print(bb.getLong());
bb.rewind();
bb.asFloatBuffer().put(99471142);
System.out.print(bb.getFloat());
bb.rewind();
bb.asDoubleBuffer().put(99471142);
System.out.print(bb.getDouble());
bb.rewind();
}
}
分享到:
相关推荐
从网络或者存储中获取到protobuf编码的二进制数据后,可以创建一个`ByteBuffer`实例,然后调用protobuf编译器生成的类的解析方法,传入`ByteBuffer`实例进行解码。`ByteBuffer`会根据protobuf编码规则正确地读取和...
ByteBuffer是一个固定大小的列表,用于存储基本数据类型,如字节、短整型、整型、长整型等。它有四个核心属性: 1. mark:初始值为-1,用于标记当前位置,方便后续回溯。 2. position:初始值为0,表示当前读写的...
然而,在某些场景下,我们可能需要将这些基本类型的数据转换为字节数组(byte[]),或者从字节数组中恢复这些基本类型的数据。这在处理网络传输、文件存储或序列化时尤其常见。 转换的基本过程可以分为两个主要步骤...
Scanner则是一个用于输入处理的类,可以读取基本类型的值和字符串。而“Memor-Hex”可能是这个项目的特色部分,可能涉及到内存管理和十六进制(Hex)数据的处理。 在这个项目中,ByteBuffer可能是作为基础工具来...
3. **解析数据**:通过使用`ByteBuffer`读取文件内容,逐个获取每个记录的头信息(数据长度、数据类型和子类型),然后实例化对应的记录类,根据数据长度和类型读取和解析实际数据。例如,`FARRecord`类中,`cpuType...
在具体的Java实现中,可以使用java.nio相关的类和方法来高效地处理这种二进制文件,例如使用ByteBuffer类来读取二进制数据,并利用其get方法来获取不同类型的数据。读取和解析数据时,要注意移动ByteBuffer中的文件...
在解析过程中,可能会用到如`ByteBuffer`、`DataInputStream`等Java I/O和二进制处理类。需要注意的是,Dalvik字节码遵循特定的指令集,如Opcode,这需要对Dalvik虚拟机的指令集有深入理解。 此外,Android SDK提供...
- 如果不是数据间隔标志,则采用ByteBuffer类对数组中的字节进行倒序处理,生成一个临时Float对象。 - 将临时对象存入相应的数据数组中。 3. **预处理过的二进制文件读取方法**: - 从标准输入流中读取四个字节...
在Java中,我们需要使用`RandomAccessFile`类来处理这种类型的文件,因为它支持随机访问和读取文件中的特定位置。 以下是一个简单的Java源代码示例,演示如何读取QQwry.dat并获取IP地址所在的地区: ```java ...
`ByteBuffer`是NIO中用于存储单个基本类型的缓冲区,它可以用来存储`byte`类型的数据。`ByteBuffer`支持两种模式:直接缓冲区和非直接缓冲区。 - **非直接缓冲区**:由Java堆内存分配空间,通过`ByteBuffer....
以下是一个简单的使用 `FileChannel` 从文件中读取数据到 `ByteBuffer` 中的示例: ```java RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw"); FileChannel inChannel = aFile....
Java NIO提供了七种Buffer类,分别对应于基本数据类型:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer和ShortBuffer。在实际操作中,我们需要将数据先读入Buffer,再从Buffer中读取,...
Java8 中的 NIO 缓冲区(Buffer)提供了多种类型的缓冲区,包括 ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer 等,每种类型的缓冲区都有其特定的用途和使用方法。...
缓冲区有多种类型,如`ByteBuffer`、`CharBuffer`、`IntBuffer`等,对应不同的数据类型。 3. **选择器(Selector)**:选择器允许单个线程同时监控多个通道,从而实现多路复用。通过注册感兴趣的通道并调用`select...
缓冲区(Buffer)是NIO中处理数据的基本单位,它是一个连续的内存区域,用于存储一定类型的数据。缓冲区的主要属性包括: - **容量(capacity)**:缓冲区能容纳的数据的最大数量。 - **位置(position)**:当前可被读写...
例如,`FileChannel.read(ByteBuffer[] bufs)`方法可以从文件中读取数据到一个缓冲区数组中,数据会被分散到各个缓冲区。 - **聚集写入(Gather Write)**:相反,聚集写入允许我们将多个缓冲区的数据聚集到一起...
`FastCopyFile.java`可能会展示如何创建FileChannel,从源文件读取数据到一个ByteBuffer,然后将该缓冲区的数据写入目标文件的FileChannel,以此实现高效的文件复制。 接下来,我们来看`UseFloatBuffer.java`。...
以太帧是网络通信中数据链路层的基本传输单元,主要在局域网(LAN)环境中使用。在Java中实现以太帧的解析程序,我们需要理解以太帧的结构、协议标准以及如何用Java处理原始的二进制数据。本文将深入探讨这个主题,...
10. **泛型**:从Java 5开始引入,提高了代码的类型安全性,允许在类、接口和方法中定义类型参数。 11. **枚举类型**:Java 5新增的特性,提供了一种安全的常量表示方式,可以避免硬编码和类型转换问题。 12. **...
- 缓冲区的类型包括ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer和ShortBuffer,分别对应不同的基本数据类型。 - 缓冲区拥有容量(capacity)、限制(limit)和位置(position)三...