转载自:http://blog.csdn.net/eclipser1987/article/details/5350007
- package cn.vicky.utils;
-
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.nio.ByteBuffer;
-
- import org.apache.mina.core.buffer.IoBuffer;
-
-
-
-
-
-
-
- public class ByteUtil {
-
- public static byte[] getBytes(Object obj) throws IOException {
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(bout);
- out.writeObject(obj);
- out.flush();
- byte[] bytes = bout.toByteArray();
- bout.close();
- out.close();
- return bytes;
- }
-
- public static Object getObject(byte[] bytes) throws IOException, ClassNotFoundException {
- ByteArrayInputStream bi = new ByteArrayInputStream(bytes);
- ObjectInputStream oi = new ObjectInputStream(bi);
- Object obj = oi.readObject();
- bi.close();
- oi.close();
- return obj;
- }
-
- public static Object getObject(ByteBuffer byteBuffer) throws ClassNotFoundException, IOException {
-
- IoBuffer buffer = IoBuffer.allocate(byteBuffer.capacity()).setAutoExpand(true);
- for (int i = 0; i < byteBuffer.capacity(); i++) {
- byteBuffer.position(i);
- buffer.put(byteBuffer.get());
- }
- buffer.position(0);
- InputStream input = buffer.asInputStream();
- ObjectInputStream oi = new ObjectInputStream(input);
- Object obj = oi.readObject();
- input.close();
- oi.close();
- return obj;
- }
-
- public static ByteBuffer getByteBuffer(Object obj) throws IOException {
- byte[] bytes = ByteUtil.getBytes(obj);
- ByteBuffer buff = ByteBuffer.wrap(bytes);
- return buff;
- }
-
- }
分享到:
相关推荐
此外,Java的`DataInputStream`和`DataOutputStream`也可以用来进行基本类型与字节流之间的转换,它们提供了如`readInt()`, `writeInt()`, `readFloat()`, `writeFloat()`等方法。 在实际应用中,需要注意字节顺序...
在Android开发中,数据在内存和磁盘之间传输时,我们经常需要在`byte[]`(字节数组)和`String`之间进行转换。这是因为`byte[]`适合处理二进制数据,如图片、音频文件等,而`String`则更适合存储文本信息。本篇将...
例如,`put(byte b)`写入一个字节,`get()`读取一个字节。 2. **put()和get()的变种**:还有其他版本的put和get方法,如putInt()、putLong()等,用于写入或读取特定类型的数据。 3. **flip()**:在写入数据后,...
ios-byteBuffer [![CI状态]( Lee / ios-byteBuffer.svg?style = flat)]( Lee / ios-byteBuffer ) 用法 #分配 ByteBuffer *buffer = [ByteBuffer initWithOrder: ByteOrderLittleEndian]; #输入数据 - ( ...
在Java编程语言中,将基本数据类型转换为字节数组以及从字节数组转换回...Java提供了`java.nio.ByteBuffer`类,它支持对字节序列的操作,并能处理大端字节序(Big-Endian)和小端字节序(Little-Endian)之间的转换。
- `ByteBuffer`类提供了将字节数组与各种类型(包括整数和字符串)之间转换的功能。例如,`ByteBuffer.wrap(byte[])`可以创建一个缓冲区,然后使用`get()`和`put()`方法读写整数。 6. **HickeyTest.java**: 这个...
- 写入数据:使用ByteBuffer的put方法将转换后的字节序列写入缓冲区,可以按单个字节、短整型、整型、长整型或其他自定义字节数组进行写入。 - 对齐处理:如果需要,可以进行字节对齐,确保数据按照特定的边界对齐...
在Java编程语言中,数据类型之间转换是常见的操作,特别是在处理二进制数据时。本文主要探讨了如何在`byte`、`byte`数组、`int`和`long`之间进行转换。以下是对这些转换方法的详细解释: 1. **Java中byte和int之间...
从网络或者存储中获取到protobuf编码的二进制数据后,可以创建一个`ByteBuffer`实例,然后调用protobuf编译器生成的类的解析方法,传入`ByteBuffer`实例进行解码。`ByteBuffer`会根据protobuf编码规则正确地读取和...
本文主要关注的是Java NIO中的ByteBuffer,一个关键的数据容器,用于在通道(Channel)和缓冲区(Buffer)之间传输数据。ByteBuffer的用法是Java NIO学习中的核心内容。 首先,我们了解下ByteBuffer的基本概念。...
在Java编程语言中,有时我们需要将整型(int)数据与字节数组(byte[])之间进行转换,这在处理网络通信、序列化或存储数据时尤为常见。本文将深入探讨Java中int与byte[]的转换方法。 首先,让我们理解为什么需要进行...
例如,从ByteBuffer读取数据到byte数组: ```java byte[] bytearray = new byte[buf.remaining()]; buf.get(bytearray, 0, bytearray.length); ``` 4. 对于直接ByteBuffer,它可以更高效地与JNI交互,因为数据...
本话题主要涉及将十六进制表示的字符串转换成byte数组。在Java、C#、Python等编程语言中,这样的转换都有其特定的方法。十六进制是一种二进制计数系统的表现形式,通常用于表示内存地址、颜色代码或二进制数据。而...
不过,通常的处理流程是将这些二进制数据读取到内存中,形成一个字节数组流(byte[]),然后可以利用各种库如nodejs中的Buffer类或Java中的ByteBuffer类来对这些数据进行读取、写入和转换。 在技术实现上,如果我们...
本篇将深入探讨Java NIO(非阻塞I/O)中的ByteBuffer和Mina库自定义的ByteBuffer之间的区别。 Java NIO的ByteBuffer是Java标准库提供的一个核心类,它是通道(Channel)和缓冲区(Buffer)之间数据传输的主要媒介。它...
使用nio byteBuffer 实现按行读取文件(大文件) 在window/linux/macOS上均测试通过 对于中文乱码也已处理成功 完整注释,可随需求更改 有问题请邮件:mly610865580@126.com
在Java编程语言中,`ByteBuffer`是Java NIO(New IO)框架中的核心类之一,它提供了一种高效处理字节数据的方式。本教程重点讲解了`ByteBuffer`的几个关键属性:mark、position、limit和capacity,以及重要的操作...
import ByteBuffer from 'byte-buffer' ; const b = new ByteBuffer ( ) ; 在CommonJS环境中: const ByteBuffer = require ( 'byte-buffer' ) ; const b = new ByteBuffer ( ) ; 当包含在浏览器环境中
3. **类型转换问题**:C语言允许直接操作指针,从而可以轻松地在不同类型之间转换,但Java需要通过特定的方法来实现这种转换。 #### 解决方案 为了解决上述问题,我们需要确保Java程序能够正确地识别和转换C语言...
上述代码片段提供了一些在Java中实现整型数(long类型)与网络字节序的字节数组之间转换的方法。以下是这些方法的详细说明: 1. `longToBytes(long n)`:这个静态方法将一个长整型(long)数值`n`转换为一个8字节的...