[英]Is it possible to convert strongly-typed data to bytes using the ByteBuffer class?
您可能知道,在计算机编程中,大多数数据都以某种方式以字节格式存储在较低的级别上。
ByteBuffer =方便地将“所有”数据类型读取/写入字节表示形式:
ByteBuffer是一个非常方便的类,用于将Bytes从“ Int”类型转换为Byte表示形式。 但反过来说。 您可以使用read方法从字节表示形式读取“类型”。
关于您的put问题:有一个通用的put方法可以接受一个字节。 但是,还有很多方便的方法可以放入和读取大多数标准数据类型,也可以读取和读取int(如您所问):
http://download.oracle.com/javase/1,5.0/docs/api/java/nio/ByteBuffer.html#putInt(int )
ByteBuffer byteBuffer = ByteBuffer.allocate(4);
byteBuffer.putInt(4);
byteBuffer.get() => gets the byte representation of the Int you put in
实际用例:
坦白地说,到目前为止,对我而言,最大的ByteBuffer使用是Cassandra NoSQL DB。 它们将所有数据存储为字节(数组),而ByteBuffer是方便的类,可帮助您读取和写入这些数据。
高端用途:
如您所见,该类在NIO包中。 我认为ByteBuffer的起源是非常非常有效地将数据写入磁盘。 它之前不会将其写入内存,而是直接将磁盘上的“块”区域映射到Java中的缓冲区。 因此,它避免了将数据读取和写入磁盘的任何中间步骤。 但这是非常高端的用法...
嗯,你的意思是像...
String foo = "My String";
ByteBuffer myBuffer = ByteBuffer.wrap(foo.getBytes());
编辑:对于int
您可以...
int i = 1234;
ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(i);
好吧,如果对象实现可序列化,则可以对其进行序列serializable
,如果确实需要,可以将序列化的字节存储在ByteBuffer
中。
ByteBuffer的主要用途似乎是缓冲字节,因此可以加快异步传输的速度。
似乎您正在考虑获取对象所驻留的RAM块,并将该块放入ByteBuffer。 这行不通。 我的意思是,您可以做到,但是祝您好运,使该对象恢复可用状态。 您必须对其进行处理,例如将指针变成有意义的新地址(指的是存储对象实际字段或其他内容的位置)。 这正在序列化,这就是可serializable
作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.