怎样将字节数组转换为string

怎样将字节数组转换为string,第1张

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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:聚客百科

原文地址: https://juke.outofmemory.cn/life/3652229.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-24
下一篇 2023-04-24

发表评论

登录后才能评论

评论列表(0条)

保存