| 將Byte數組轉化為String | |
FCL得很多方法的返回值都是包含字符的Byte數組而不是返回一個(gè)String,這樣的方法包含在如下的類(lèi)中: · 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編碼的字符,很多時(shí)候,我們可能需要將這樣的Byte數組轉換為一個(gè)String。 解決方案 將一個(gè)包含ASCII編碼字符的Byte數組轉化為一個(gè)完整的String,可以使用如下的方法: using System; using System.Text; public static string FromASCIIByteArray(byte[] characters) { ASCIIEncoding encoding = new ASCIIEncoding( ); string constructedString = encoding.GetString(characters); return (constructedString); } 將一個(gè)包含Unicode編碼字符的Byte數組轉化為一個(gè)完整的String,可以使用如下的方法: public static string FromUnicodeByteArray(byte[] characters) { UnicodeEncoding encoding = new UnicodeEncoding( ); string constructedString = encoding.GetString(characters); return (constructedString); } 討論 ASCIIEncoding類(lèi)的GetString方法可以將byte數組中的7-BitsASCII字符轉換為一個(gè)String;任何大于127的值將被轉化為兩個(gè)字符。在System.Text命名空間中你可以找到ASCIIEncoding類(lèi),查找該類(lèi)的GetString函數你還可以發(fā)現這個(gè)函數有多種重載方式以支持一些附加的參數。這個(gè)方法的重載版本還可以將一個(gè)Byte數組中的一部分字符轉化為String。 將Byte數組轉化為String的GetString方法可以在System.Text命名空間的UnicodeEncoding類(lèi)中找到,該方法將包含16-bitsUnicode字符的Byte數組轉化為String。同ASCIIEncoding類(lèi)的GetString方法一樣,該方法也包含一個(gè)將Byte數組中的特定部分轉化為String的重載版本。 |
聯(lián)系客服