共用方式為


UTF7Encoding.GetChars 方法

定義

將位元組序列解碼成一組字元。

多載

GetChars(Byte*, Int32, Char*, Int32)

將起始於指定位元組指標的位元組序列解碼成一組字元;儲存該組字元時,係以指定的字元指標為起始點。

GetChars(Byte[], Int32, Int32, Char[], Int32)

將指定位元組陣列中的位元組序列解碼成指定的字元陣列。

GetChars(Byte*, Int32, Char*, Int32)

來源:
UTF7Encoding.cs
來源:
UTF7Encoding.cs
來源:
UTF7Encoding.cs

重要

此 API 不符合 CLS 規範。

將起始於指定位元組指標的位元組序列解碼成一組字元;儲存該組字元時,係以指定的字元指標為起始點。

public:
 override int GetChars(System::Byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int

參數

bytes
Byte*

要解碼的第一個位元組指標。

byteCount
Int32

要解碼的位元組數。

chars
Char*

開始寫入產生的一組字元之位置指標。

charCount
Int32

要寫入的最大字元數。

傳回

chars 所表示的位置上寫入的實際字元數。

屬性

例外狀況

bytesnull (Nothing)。

-或-

charsnull (Nothing)。

byteCountcharCount 小於零。

charCount 小於結果字元數。

發生後援 (如需詳細資訊,請參閱 .NET 中的字元編碼)

-和-

DecoderFallback 設定為 DecoderExceptionFallback

備註

若要計算儲存所產生字元所需的 GetChars 確切數位大小,請使用 GetCharCount。 若要計算數位大小上限,應用程式應該使用 GetMaxCharCount。 方法 GetCharCount 通常允許配置較少的記憶體,而 GetMaxCharCount 方法通常會執行得更快。

要轉換的數據,例如從數據流讀取的數據,可能只能在循序區塊中使用。 在此情況下,或者,如果數據量太大,因此需要分成較小的區塊,應用程式應該分別使用 Decoder 方法Encoder或 方法所提供的 GetDecoderGetEncoder

注意

UTF7Encoding 不提供錯誤偵測。 遇到無效的位元組時, UTF7Encoding 通常會發出無效的位元組。 如果位元組大於十六進位0x7F,位元組值會以零延伸至 Unicode 字元,結果會儲存在陣列中 chars ,並終止任何移位序列。 例如,如果要編碼的位元組是十六進位0x81,則產生的字元為U+0081。 基於安全性考慮,建議您使用 UTF8EncodingUnicodeEncodingUTF32Encoding ,並啟用錯誤偵測。

另請參閱

適用於

GetChars(Byte[], Int32, Int32, Char[], Int32)

來源:
UTF7Encoding.cs
來源:
UTF7Encoding.cs
來源:
UTF7Encoding.cs

將指定位元組陣列中的位元組序列解碼成指定的字元陣列。

public:
 override int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex);
public override int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);
override this.GetChars : byte[] * int * int * char[] * int -> int
Public Overrides Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer) As Integer

參數

bytes
Byte[]

包含要解碼之位元組序列的位元組陣列。

byteIndex
Int32

要解碼的第一個位元組索引。

byteCount
Int32

要解碼的位元組數。

chars
Char[]

包含產生的一組字元之字元陣列。

charIndex
Int32

要開始寫入產生的一組字元之索引。

傳回

寫入 chars 的實際字元數。

例外狀況

bytesnull (Nothing)。

-或-

charsnull (Nothing)。

byteIndexbyteCountcharIndex 小於零。

-或-

byteindexbyteCount 不代表 bytes 中有效的範圍。

-或-

charIndexchars 中不是有效的索引。

chars 到陣列結尾處,charIndex 沒有足夠的容量容納結果字元。

發生後援 (如需詳細資訊,請參閱 .NET 中的字元編碼)

-和-

DecoderFallback 設定為 DecoderExceptionFallback

範例

下列程式代碼範例示範如何使用 GetChars 方法來譯碼位元組陣列中的元素範圍,並將結果儲存在字元陣列中。

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Char>^chars;
   array<Byte>^bytes = {85,84,70,55,32,69,110,99,111,100,105,110,103,32,69,120,97,109,112,108,101};
   UTF7Encoding^ utf7 = gcnew UTF7Encoding;
   int charCount = utf7->GetCharCount( bytes, 2, 8 );
   chars = gcnew array<Char>(charCount);
   int charsDecodedCount = utf7->GetChars( bytes, 2, 8, chars, 0 );
   Console::WriteLine( "{0} characters used to decode bytes.", charsDecodedCount );
   Console::Write( "Decoded chars: " );
   IEnumerator^ myEnum = chars->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Char c = safe_cast<Char>(myEnum->Current);
      Console::Write( "[{0}]", c.ToString() );
   }

   Console::WriteLine();
}
using System;
using System.Text;

class UTF7EncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
             85,  84,  70,  55,  32,  69, 110,
             99, 111, 100, 105, 110, 103,  32,
             69, 120,  97, 109, 112, 108, 101
        };

        UTF7Encoding utf7 = new UTF7Encoding();

        int charCount = utf7.GetCharCount(bytes, 2, 8);
        chars = new Char[charCount];
        int charsDecodedCount = utf7.GetChars(bytes, 2, 8, chars, 0);

        Console.WriteLine(
            "{0} characters used to decode bytes.", charsDecodedCount
        );

        Console.Write("Decoded chars: ");
        foreach (Char c in chars) {
            Console.Write("[{0}]", c);
        }
        Console.WriteLine();
    }
}
Imports System.Text

Class UTF7EncodingExample
    
    Public Shared Sub Main()
        Dim chars() As Char
        Dim bytes() As Byte = { _
            85,  84,  70,  55,  32,  69, 110, _
            99, 111, 100, 105, 110, 103,  32, _
            69, 120,  97, 109, 112, 108, 101 _
        }
        
        Dim utf7 As New UTF7Encoding()
        
        Dim charCount As Integer = utf7.GetCharCount(bytes, 2, 8)
        chars = New Char(charCount - 1) {}
        Dim charsDecodedCount As Integer = utf7.GetChars(bytes, 2, 8, chars, 0)
        
        Console.WriteLine("{0} characters used to decode bytes.", charsDecodedCount)
        
        Console.Write("Decoded chars: ")
        Dim c As Char
        For Each c In  chars
            Console.Write("[{0}]", c)
        Next c
        Console.WriteLine()
    End Sub
End Class

備註

若要計算儲存所產生字元所需的 GetChars 確切數位大小,請使用 GetCharCount。 若要計算數位大小上限,應用程式應該使用 GetMaxCharCount。 方法 GetCharCount 通常允許配置較少的記憶體,而 GetMaxCharCount 方法通常會執行得更快。

要轉換的數據,例如從數據流讀取的數據,可能只能在循序區塊中使用。 在此情況下,或者,如果數據量太大,因此需要分成較小的區塊,應用程式應該分別使用 Decoder 方法Encoder或 方法所提供的 GetDecoderGetEncoder

注意

UTF7Encoding 不提供錯誤偵測。 遇到無效的位元組時, UTF7Encoding 通常會發出無效的位元組。 如果位元組大於十六進位0x7F,位元組值會以零延伸至 Unicode 字元,結果會儲存在陣列中 chars ,並終止任何移位序列。 例如,如果要編碼的位元組是十六進位0x81,則產生的字元為U+0081。 基於安全性考慮,建議您使用 UTF8EncodingUnicodeEncodingUTF32Encoding ,並啟用錯誤偵測。

另請參閱

適用於