二进制编码
程序员文章站
2024-03-11 21:37:01
...
在网络信道中,所有的数据都只能按照字节传输
对所有的基本类型,均可以转成byte[]
例如:
boolean | byte[1] |
short | byte[2] |
int | byte[4] |
float | byte[4] |
double | byte[8] |
long | byte[8] |
String | byte[N] |
ByteBuffer
import java.nio.ByteBuffer,可译为字节缓冲区
使用这个类,可以轻松完成二进制编解码
ByteBuffer编码过程
1、编译时,首先创建一个ByteBuffer对象,
ByteBuffer bbuf = ByteBuffer.allocate(1000);
2、然后把数据塞进去
// 放入数据
bbuf.putInt(1234);
bbuf.putDouble(33.44);
3、查看编码后的结果
// 查看编码后的结果
int size = bbuf.position(); // 已经编码的字节数
byte[] array = bbuf.array(); // 取得ByteBuffer的内部数组
package my;
import java.nio.ByteBuffer;
public class Test
{
// 此工具方法用于按十六进制打印一个字节数组 ( 十六进制,参考《二进制篇》 )
public static void print(byte[] array, int off, int length)
{
for(int i=0; i<length; i++)
{
int index = off + i;
if(index >= array.length) break;
if( i>0 && i%8 == 0)
System.out.printf("\n");
System.out.printf("%02X ", array[index]);
}
System.out.printf("\n");
}
public static void main(String[] args)
{
// 注意:不支持 new ByteBuffer()来创建
ByteBuffer bbuf = ByteBuffer.allocate(1000);
// 放入数据
bbuf.putInt(1234);
bbuf.putDouble(33.44);
// 查看编码后的结果
int size = bbuf.position(); // 已经编码的字节数
byte[] array = bbuf.array(); // 取得ByteBuffer的内部数组
print (array, 0, 12);
System.out.println("exit");
}
}
上一篇: nested exception is java.awt.AWTError: Can't connect to X11 window server using 'localhost:10.0' as
下一篇: 字符串加密 - 牛客网华为机试中等难度
推荐阅读
-
二进制编码
-
java解析php函数json_encode unicode 编码问题
-
Java应用打包后运行需要注意编码问题
-
详解Huffman编码算法之Java实现
-
基础知识收录(五)编码 博客分类: 基础知识收录 编码unicodeutf8ASCII
-
字节与编码 博客分类: 操作系统 字节8位编码ASCII
-
HTML特殊字符ASCII编码 博客分类: javaJ2EE htmlASCII
-
php批量转换文件夹下所有文件编码的函数类
-
Python 安装编码报错 - UnicodeDecodeError 博客分类: Python pythonsysasciiUnicodeDecodeError
-
计算机编码发展史 AsciiGBKBIG5UnicodeUtf-8