`

整型视图缓冲区如何读取字节缓冲区的数据?

    博客分类:
  • Java
 
阅读更多
package com.zhengtian.test;

import java.nio.ByteBuffer;
import java.nio.IntBuffer;

/**
 * @author zhengtian
 * 
 * @date 2011-6-17 下午02:39:24
 */
@SuppressWarnings("all")
public class test {
	public static void main(String[] args) {
		// 创建一个字节缓冲区
		ByteBuffer bb = ByteBuffer.allocate(10);
		// 创建该字节缓冲区的整型视图缓冲区,视图缓冲区与字节缓冲区共享缓冲区元素,但独立维护自己缓冲区的postion、limit、容量等
		IntBuffer ib = bb.asIntBuffer();
		/**
		 * 将字符型变量转换为数值型变量实际上有两种对应关系,在我们在第一部分所说的那种转换中, 实际上是将其转换成对应的ASCII码,但是我们有时还需要另一种转换关系, 例如,‘1’就是指的数值1,而不是其ASCII码,对于这种转换, 我们可以使用Character的
		 * getNumericValue(char ch)方法。
		 * 
		 * 因此將字符'1'、'2'、'3'、'4'存入字节缓冲区时,实际上是存储的二进制形式的49、50、51、52
		 */
		bb.put((byte) '1');
		bb.put((byte) '2');
		bb.put((byte) '3');
		bb.put((byte) '4');

		bb.flip();
		System.out.println(bb.get());
		System.out.println(bb.get());
		System.out.println(bb.get());

		/**
		 * 整型缓冲区在读取数据时,是一次从字节缓冲区中读取4个字节,然后将先读取的字节放在高位,后读取的字节放在低位,最后组合成一个int
		 */
		System.out.println(ib.get());

	}
}

分享到:
评论

相关推荐

    Java NIO.pdf

    - `read(ByteBuffer dst)`:从通道读取数据到缓冲区。 - `write(ByteBuffer src)`:从缓冲区写入数据到通道。 - `transferTo(WritableByteChannel target, long position, long count)`:将文件从当前位置复制到...

    webgl-reference-card-1_0

    - **`ulong byteLength`**:只读属性,返回缓冲区的长度(以字节为单位)。 **用途**:创建一个 ArrayBuffer 对象,并可通过创建一个或多个视图来修改数据。 - **Views** 以下是一些常见的 Typed Array 类型...

    android audiorecord录音并绘图

    `read()`方法可以读取到缓冲区的数据,返回值表示实际读取的字节数。 4. 当需要停止录音时,调用`stop()`方法。 5. 最后,释放资源,调用`release()`方法。 ### 3. 实时绘图 为了可视化音频数据,我们可以使用...

    易语言-易语言汇编版ByteBuffer

    6. **分片与复制**:ByteBuffer可以创建视图(slice),生成一个新的缓冲区,它共享原始缓冲区的一部分数据。此外,还有复制缓冲区的方法,生成一个完全独立的新缓冲区。 7. **协议兼容性**:ByteBuffer的设计目的...

    ArrayBuffer:HW9任务3

    数据在缓冲区中的位置会根据其类型进行字节对齐,这影响了数据的读取和写入。 5. **内存共享**:ArrayBuffer对象可以被多个视图同时引用,这样可以在不复制数据的情况下实现数据的共享,提高性能。 6. **读写操作*...

    NodeJs原理详解1

    首先,ArrayBuffer是一种在JavaScript中表示固定长度的原始二进制数据缓冲区的对象。它并不提供直接的数据访问,而是通过类型数组对象(如Uint8Array、Int32Array等)或DataView来间接操作。ArrayBuffer就像是一个...

    ajs_arraybuffer

    DataView可以处理各种数据类型,包括字节、短整型、整型、浮点型等,并且支持大端序和小端序。 3. **创建ArrayBuffer**:可以通过`new ArrayBuffer(size)`来创建一个ArrayBuffer,其中size参数指定缓冲区的字节长度...

    2021-2022计算机二级等级考试试题及答案No.4870.docx

    9. ASP(Active Server Pages)中,Response对象的Write、BinaryWrite方法用于输出内容,而Flush方法用于刷新缓冲区。 10. 视图在数据库中是虚拟表,可以用于查询和更新,但视图本身不是查询结果。 11. 在Excel...

    2021-2022计算机二级等级考试试题及答案No.17.docx

    - `void flush()`:此方法不属于`InputStream`类,而是`OutputStream`和`Writer`类的方法,用于清空缓冲区并强制将缓冲区中的所有字节写入输出流。 #### 2. 文本框控件的滚动条设置 - **知识点**: - `ScrollBar...

    ArrayBuffer-benchmark:JavaScript 的 ArrayBuffer 性能演示

    ArrayBuffer 是一种原始数据缓冲区,它不直接暴露访问其内容的方法,而是通过视图(View)对象来访问,如Int8Array、Uint16Array、Float32Array等。这些视图类型提供了不同数据类型的解析和操作。ArrayBuffer 的主要...

    2021-2022计算机二级等级考试试题及答案No.15138.docx

    1. **缓冲区技术**:缓冲区技术是在程序中使用缓存来提高读写效率的一种技术。 2. **Buffered流**:BufferedInputStream和BufferedOutputStream是Java中实现缓冲区技术的两种流。 **解释**:使用带缓冲区的流可以...

    Java TCP/IP Socket编程

    - **组合输入输出流**:为了提高数据传输的效率,可以使用缓冲区来组合多个输入输出流。 - **成帧与解析**:为了确保数据的完整性和顺序性,需要对数据进行成帧,并在接收端进行解析。 - **Java特定编码**:Java提供...

    2021-2022计算机二级等级考试试题及答案No.13918.docx

    8. 使用了缓冲区技术的流是BufferedReader,它能提高读取效率。 9. 计算机硬件系统由运算器、控制器、存储器、输入设备和输出设备五大部分组成。 10. 编译程序的主要目的是将源代码编译成目标代码,以便计算机能够...

    BinaryConvert

    1. **ArrayBuffer**: 这是一个无结构的、只读的二进制数据缓冲区。它不包含任何数据格式,只是一个简单的字节数组,可以被不同的视图(View)解析。 2. **Typed Arrays**: 包括Int8Array、Uint8Array、Int16Array、...

    Java_TCPIP_Socket编程(中文版)

    - **控制默认行为**:可以通过设置套接字选项来调整套接字的行为,例如启用Keep-Alive功能、调整缓冲区大小等。 - **关闭连接**:在完成通信后,应适当地关闭连接以释放资源。 #### 第5章 NIO (New I/O) - **为...

    VC开发经验汇总300例

    例如,可以使用`CString::GetBuffer()`获取内部缓冲区的指针,或使用`strcpy_s`和`strncpy_s`将char*转换为CString。 2. char 和 char*类型应用:这两个是C语言中的基础数据类型,用于处理文本。了解它们的区别和...

    2021-2022计算机二级等级考试试题及答案No.14925.docx

    在Java中,`BufferedOutputStream`使用了缓冲区技术来提高数据写入的效率。 ### 24. IP地址的表示 IP地址实际上使用4个字节来存储和标识,而不是3个字节。 ### 25. Visual FoxPro中的记录查找 在Visual FoxPro中...

    java(ppt上源码).rar

    - **缓冲区和转换流**:BufferedReader和BufferedWriter提供缓冲功能,InputStreamReader和OutputStreamWriter用于字符编码转换。 4. **集合框架** - **容器**:ArrayList、LinkedList、HashSet、HashMap等是常用...

    JAVA自学入门宝典及案例开发集锦

    理解字节流和字符流的区别,以及缓冲区和转换流的作用,对处理数据传输至关重要。 8. **多线程**:Java内置了对多线程的支持,通过Thread类和Runnable接口可以创建并运行并发任务。理解线程同步(如synchronized...

Global site tag (gtag.js) - Google Analytics