将Byte数组转化为String

转载 2004年07月01日 09:57:00

问题

FCL得很多方法的返回值都是包含字符的Byte数组而不是返回一个String,这样的方法包含在如下的类中:

·                  System.Net.Sockets.Socket.Receive

·                  System.Net.Sockets.Socket.ReceiveFrom

·                  System.Net.Sockets.Socket.BeginReceive

·                  System.Net.Sockets.Socket.BeginReceiveFrom

·                  System.Net.Sockets.NetworkStream.Read

·                  System.Net.Sockets.NetworkStream.BeginRead

·                  System.IO.BinaryReader.Read

·                  System.IO.BinaryReader.ReadBytes

·                  System.IO.FileStream.Read

·                  System.IO.FileStream.BeginRead

·                  System.IO.MemoryStream // Constructor

·                  System.IO.MemoryStream.Read

·                  System.IO.MemoryStream.BeginRead

·                  System.Security.Cryptography.CryptoStream.Read

·                  System.Security.Cryptography.CryptoStream.BeginRead

·                  System.Diagnostics.EventLogEntry.Data

由这些方法返回的Byte数组中包含的通常是以ASCII编码或是Unicode编码的字符,很多时候,我们可能需要将这样的Byte数组转换为一个String

解决方案

将一个包含ASCII编码字符的Byte数组转化为一个完整的String,可以使用如下的方法:

using System;
using System.Text;
 
public static string FromASCIIByteArray(byte[] characters)
{
    ASCIIEncoding encoding = new ASCIIEncoding( );
    string constructedString = encoding.GetString(characters);
    return (constructedString);

}

将一个包含Unicode编码字符的Byte数组转化为一个完整的String,可以使用如下的方法:

public static string FromUnicodeByteArray(byte[] characters)
{
    UnicodeEncoding encoding = new UnicodeEncoding( );
    string constructedString = encoding.GetString(characters);
    return (constructedString);

}

 

讨论

ASCIIEncoding类的GetString方法可以将byte数组中的7-BitsASCII字符转换为一个String;任何大于127的值将被转化为两个字符。在System.Text命名空间中你可以找到ASCIIEncoding类,查找该类的GetString函数你还可以发现这个函数有多种重载方式以支持一些附加的参数。这个方法的重载版本还可以将一个Byte数组中的一部分字符转化为String

Byte数组转化为StringGetString方法可以在System.Text命名空间的UnicodeEncoding类中找到,该方法将包含16-bitsUnicode字符的Byte数组转化为String。同ASCIIEncoding类的GetString方法一样,该方法也包含一个将Byte数组中的特定部分转化为String的重载版本。

参考

要想了解更多的知识,可以参见MSDN文档

java 里面的string 和byte[] 怎么互转?

1.string 转 byte[] byte[] midbytes=isoString.getBytes("UTF8"); //为UTF8编码 byte[] isoret = srt2.getByte...
  • phenixyf
  • phenixyf
  • 2016年08月04日 14:26
  • 870

byte数组和String之间的相互转换代码

public static String converByteToString(byte[] data) { ByteArrayInputStream byteInput = null; GZ...
  • u012516914
  • u012516914
  • 2014年08月27日 15:57
  • 2507

byte[]与String互相转换

参考;http://www.cnblogs.com/fuzhaoyang56/archive/2013/05/24/3096471.htmlString s = "fs123fdsa";//Strin...
  • u014473112
  • u014473112
  • 2016年07月25日 14:39
  • 1623

将Byte数组转化为String

作者:21aspnet 转自:http://blog.csdn.net/21aspnet/article/details/1539848 FCL得很多方法的返回值都是包含字符的Byte数组而不是返...
  • whw8007
  • whw8007
  • 2014年03月25日 19:56
  • 500

byte[] 转换成String,再getBytes()之后byte[]内容与原数组不同

问题代码 byte[] bytes = new byte[]{40, -37, -96, 46, -75, -10}; byte[] myBytes = new String(bytes).getB...
  • qq_27760433
  • qq_27760433
  • 2017年10月24日 11:04
  • 329

Stream 和 byte[] 之间的转换

一. 二进制转换成图片 1 2 3 4 5 MemoryStream ms = new MemoryStream(bytes); ms.Position = 0...
  • Alexander_Frank
  • Alexander_Frank
  • 2016年05月26日 10:26
  • 904

Java中字符数组、String类、StringBuffer三者的相互转换

一、StringBuffer与String的相互转换 1、将StringBuffer转换成String StringBuffer类成员toString函数可将其转换成String类型。 String...
  • strggle_bin
  • strggle_bin
  • 2017年04月07日 15:06
  • 2412

Golang黑科技之——string与[]byte转换

我们知道,相对于C语言,golang是类型安全的语言。但是安全的代价就是性能的妥协。 下面我们通过Golang中的“黑科技”来一窥Golang不想让我们看到的“秘密”——string的底层数据。 ...
  • vipally
  • vipally
  • 2016年10月27日 00:09
  • 19392

java中String\十六进制String\byte[]之间相互转换函数

java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//**       * 把16进制字符串转换成字节数组       * @param hex  ...
  • qq_24531461
  • qq_24531461
  • 2016年11月29日 14:27
  • 641

字节数组byte[]和整型,浮点型数据的转换——Java代码

本文介绍如何将一个基本数据类型的二进制串转化为这个基本数据,这个二进制串以字节数组的形式保存。...
  • giantpoplar
  • giantpoplar
  • 2015年08月14日 11:54
  • 8083
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将Byte数组转化为String
举报原因:
原因补充:

(最多只允许输入30个字)