Export (0) Print
Expand All

UnicodeEncoding.GetString Method (Byte[], Int32, Int32)

Decodes a range of bytes from a byte array into a string.

Namespace:  System.Text
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(false)]
public override string GetString(
	byte[] bytes,
	int index,
	int count
)

Parameters

bytes
Type: System.Byte[]
The byte array containing the sequence of bytes to decode.
index
Type: System.Int32
The index of the first byte to decode.
count
Type: System.Int32
The number of bytes to decode.

Return Value

Type: System.String
A String object containing the results of decoding the specified sequence of bytes.

ExceptionCondition
ArgumentNullException

bytes is null (Nothing).

ArgumentOutOfRangeException

index or count is less than zero.

-or-

index and count do not denote a valid range in bytes.

ArgumentException

Error detection is enabled, and bytes contains an invalid sequence of bytes.

DecoderFallbackException

A fallback occurred (see Character Encoding in the .NET Framework for fuller explanation)

-and-

DecoderFallback is set to DecoderExceptionFallback.

With error detection, an invalid sequence causes this method to throw a ArgumentException. Without error detection, invalid sequences are ignored, and no exception is thrown.

Data to be converted, such as data read from a stream, might be available only in sequential blocks. In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, the application should use the Decoder or the Encoder object provided by the GetDecoder or the GetEncoder method, respectively.

The following code example encodes a string into an array of bytes, and then decodes the bytes back into a string.


using System;
using System.Text;

public class SamplesUnicodeEncoding  {

   public static void Main()  {

      // Create two instances of UnicodeEncoding: one with little-endian byte order and one with big-endian byte order.
      UnicodeEncoding u16LE = new UnicodeEncoding( false, true, true );
      UnicodeEncoding u16BE = new UnicodeEncoding( true, true, true );


      // Create byte arrays from the same string containing the following characters:
      //    Latin Small Letter Z (U+007A)
      //    Latin Small Letter A (U+0061)
      //    Combining Breve (U+0306)
      //    Latin Small Letter AE With Acute (U+01FD)
      //    Greek Small Letter Beta (U+03B2)
      String myStr = "za\u0306\u01FD\u03B2";

      // barrBE uses the big-endian byte order.
      byte[] barrBE = new byte[u16BE.GetByteCount( myStr )];
      u16BE.GetBytes( myStr, 0, myStr.Length, barrBE, 0 );

      // barrLE uses the little-endian byte order.
      byte[] barrLE = new byte[u16LE.GetByteCount( myStr )];
      u16LE.GetBytes( myStr, 0, myStr.Length, barrLE, 0 );


      // Decode the byte arrays.
      Console.Write( "BE array with BE encoding : " );
      PrintDecodedString( barrBE, u16BE );
      Console.Write( "LE array with LE encoding : " );
      PrintDecodedString( barrLE, u16LE );


      // Decode the byte arrays using an encoding with a different byte order.
      Console.Write( "BE array with LE encoding : " );
      try  {
         PrintDecodedString( barrBE, u16LE );
      }
      catch ( System.ArgumentException e )  {
         Console.WriteLine( e.Message );
      }

      Console.Write( "LE array with BE encoding : " );
      try  {
         PrintDecodedString( barrLE, u16BE );
      }
      catch ( System.ArgumentException e )  {
         Console.WriteLine( e.Message );
      }

   }


   public static void PrintDecodedString( byte[] bytes, Encoding enc )  {

      // Display the name of the encoding used.
      Console.Write( "{0,-25} :", enc.ToString() );

      // Decode the bytes and display the characters.
      Console.WriteLine( enc.GetString( bytes, 0, bytes.Length ) );

   }

}



.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Community Additions

ADD
Show:
© 2015 Microsoft