Java中byte数组转换成string字符串可以直接使用string类的构造函数。而string转byte数组,则可以使用string类型的getBytes()方法进行转换,如下形式:
1、string 转 byte[]
String str = "Hello";//声明一个字符串
byte[] srtbyte = strgetBytes();//使用string类的getBytes方法进行转换
2、byte[] 转 string
byte[] srtbyte;//声明一个byte字节数组
String res = new String(srtbyte);//使用构造函数转换成字符串
Systemoutprintln(res);
也可以将byte转换的时候,设定编码方式相互转换,如下代码:
String str = "hello";
byte[] srtbyte = null;
try {
srtbyte = strgetBytes("UTF-8");//设定转换的编码格式
String res = new String(srtbyte,"UTF-8");
Systemoutprintln(res);
} catch (UnsupportedEncodingException e) {//有可能会出现不能支持的编码格式,捕捉异常。
eprintStackTrace();
}
字符串就是字符数组,而字符的本质就是整数,而整数可以是一个或多个字节的组成的。
计算机基础ascii码知道吗?字符就是靠用整数来编码的,字符存储时就是整数,只不过显示给你看的时候是你以为的有意义的字符而已。不排除有些学java、c#或其它脚本语言的新手不知道这个。如果是学过C语言就知道,字符‘A’和整数65是可以判断相等的,因为'A'的本质就是65
字节串 bytes 也叫字节序列,存储以字节为单位的数据,bytes 具有以下特点:
字符串编码后得到的字节串,均是 0x00~0xFF 之间的整数:
下面,我们来看 bytes 的基本操作。
也可以使用十六进制的形式创建字面值:
但不允许直接使用非 ASCII 字符创建:
具体用法如下:
字节数组是 可变的字节序列 。
具体用法如下:
值得注意的是字节数组是可变的字节序列,因此,字节数组支持索引和切片赋值。
最近我说明了用VB NET将字符串转换成字节数组的方法 如果你需要将一个字节数组转换成字符串 可以使用BitConverter ToString或Covert ToBase String方法 下面我提供实例说明如何用上两种方法进行转换
字节数组用法
如果你准备恢复用二进制格式保存的文本 在System Text命名空间中调用适当编码对象的GetString方法
使用System BitConverter类是将一个字节数组转换成字符串的最快捷的方法 这个类为基本数据类型和字节数组之间的转换提供方法 要使用这个方法 使用超载的ToString方法接受一个字节数组为参数 在这种情况下 字符串中包括字节数组的每一个十六进制格式的值 数值间用破折号隔开 使用字符串没有办法自动撤销转换 恢复原始的字节数组 查看列表A中的例子
Listing A
Private Sub ConvertByteArrayToString() Dim btText() As Byte = { } Dim strText As String strText = BitConverter ToString(btText) MessageBox Show(strText) End Sub 通过System Convert类的ToBase String和FromBase Stirng方法 利用Base 编码 也可以把字节数组转换成字符串 在Base 编码中 每个三字节的序列被转换为四个字节 每个Base 编码字符为值域中 个可能值中的一个 查看列表B中的例子
Listing B
Private Sub ConvertByteArrayToString() Dim btText() As Byte = { } Dim strText As String strText = Convert ToBase String(btText) MessageBox Show(strText) End Sub 以上两种方法都可以用来建立一个二进制数据表示法 记住 为了将一个字节数组恢复成真实的文本信息 你必须使用正确的编码类
lishixinzhi/Article/program/net/201311/11708
在这段代码中,buffer的长度是1024,是一个固定的值。而从map中获取到的byte数组的长度可能不同,因此需要根据实际长度来创建result数组,而不是直接使用长度为1024的固定数组。
如果直接使用固定长度的数组来接收map中的byte数组,可能会导致部分数据被截断,或者数组过大导致内存浪费。因此,需要根据实际情况动态分配数组大小。
另外,使用循环逐个复制的方式将buffer中的数据复制到result数组中,是因为在Java中,数组是引用类型,直接将buffer赋值给result只是让result指向了buffer的内存空间,而不是复制了其中的数据。因此需要使用循环逐个复制的方式,将buffer中的数据复制到新的result数组中。
对于Socket来说,要先创建连接,然后才能通信。在通信过程中,可以getInputStream和getOutputStream得到输出流和输入流,从而进行连续的流读写
对于UDP的DatagramSocket来说,收发数据使用send(DatagramPacket)和receive(DatagramPacket),而DatagramPacket本质上就是对byte[]数组的封装,因此说UDP只是简单发送字节数组。
用途不同,文件操作的时候,字符串和字符串数组之类的主要是用在处理文本文件(一般就是txt之类的),字节和字节数组主要是用作处理二进制的数据(比如exe之类的),或者是用在通讯上(比如串口或者TCP之类的)
以上就是关于怎样将字节数组转换为string全部的内容,包括:怎样将字节数组转换为string、字节数组存的是什么、Python 序列 - bytes 和 bytearray等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!