UTF7Encoding.GetBytes 方法

定义

将一组字符编码为一个字节序列。

重载

GetBytes(Char*, Int32, Byte*, Int32)

将从指定的字符指针开始的一组字符编码为一个字节序列,并从指定的字节指针开始存储该字节序列。

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

将指定字符数组中的一组字符编码到指定的字节数组中。

GetBytes(String, Int32, Int32, Byte[], Int32)

将指定 String 中的一组字符编码到指定的字节数组中。

GetBytes(Char*, Int32, Byte*, Int32)

Source:
UTF7Encoding.cs
Source:
UTF7Encoding.cs
Source:
UTF7Encoding.cs

重要

此 API 不符合 CLS。

将从指定的字符指针开始的一组字符编码为一个字节序列,并从指定的字节指针开始存储该字节序列。

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

参数

chars
Char*

指向第一个要编码的字符的指针。

charCount
Int32

要编码的字符的数目。

bytes
Byte*

一个指针,指向开始写入所产生的字节序列的位置。

byteCount
Int32

最多写入的字节数。

返回

在由 bytes 指示的位置处写入的实际字节数。

属性

例外

charsnull (Nothing)。

- 或 -

bytesnull (Nothing)。

charCountbyteCount 小于零。

byteCount 少于所产生的字节数。

发生了回退(如需进一步说明,请参阅 .NET 中的字符编码)。

-和-

EncoderFallback 设置为 EncoderExceptionFallback

注解

为了计算存储生成的字节所需的 GetBytes 确切数组大小,应用程序使用 GetByteCount。 若要计算最大数组大小,应用程序应使用 GetMaxByteCountGetByteCount方法通常允许分配较少的内存,而 GetMaxByteCount 方法的执行速度通常更快。

要转换的数据(例如从流读取的数据)可能仅在顺序块中可用。 在这种情况下,或者,如果数据量太大,需要将其划分为较小的块,则应用程序应分别使用 Decoder 方法或 Encoder 方法提供的 GetDecoderGetEncoder

注意

UTF7Encoding 不提供错误检测。 无效字符编码为修改后的 base 64 字符。 出于安全原因,建议应用程序使用 UTF8EncodingUnicodeEncodingUTF32Encoding 并启用错误检测。

另请参阅

适用于

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

Source:
UTF7Encoding.cs
Source:
UTF7Encoding.cs
Source:
UTF7Encoding.cs

将指定字符数组中的一组字符编码到指定的字节数组中。

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

参数

chars
Char[]

包含要编码的字符集的字符数组。

charIndex
Int32

第一个要编码的字符的索引。

charCount
Int32

要编码的字符的数目。

bytes
Byte[]

要包含所产生的字节序列的字节数组。

byteIndex
Int32

要开始写入所产生的字节序列的索引位置。

返回

写入 bytes 的实际字节数。

例外

charsnull (Nothing)。

- 或 -

bytesnull (Nothing)。

charIndexcharCountbyteIndex 小于零。

- 或 -

charIndexcharCount 不表示 chars中的有效范围。

- 或 -

byteIndex 不是 bytes 中的有效索引。

bytes 中从 byteIndex 到数组结尾没有足够的容量来容纳所产生的字节。

发生了回退(如需进一步说明,请参阅 .NET 中的字符编码)。

-和-

EncoderFallback 设置为 EncoderExceptionFallback

示例

下面的代码示例演示如何使用 GetBytes 方法对 中的字符范围进行编码, String 并将编码的字节存储在字节数组的元素范围中。

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Byte>^bytes;
   
   // Unicode characters.
   
   // Pi
   // Sigma
   array<Char>^chars = {L'\u03a0',L'\u03a3',L'\u03a6',L'\u03a9'};
   UTF7Encoding^ utf7 = gcnew UTF7Encoding;
   int byteCount = utf7->GetByteCount( chars, 1, 2 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = utf7->GetBytes( chars, 1, 2, bytes, 0 );
   Console::WriteLine( "{0} bytes used to encode characters.", bytesEncodedCount );
   Console::Write( "Encoded bytes: " );
   IEnumerator^ myEnum = bytes->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "[{0}]", b );
   }

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

class UTF7EncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        UTF7Encoding utf7 = new UTF7Encoding();
        
        int byteCount = utf7.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf7.GetBytes(chars, 1, 2, bytes, 0);
        
        Console.WriteLine(
            "{0} bytes used to encode characters.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}
Imports System.Text
Imports Microsoft.VisualBasic.strings

Class UTF7EncodingExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte
        ' Unicode characters.
        ' ChrW(35)  = #
        ' ChrW(37)  = %
        ' ChrW(928) = Pi
        ' ChrW(931) = Sigma
        Dim chars() As Char = {ChrW(35), ChrW(37), ChrW(928), ChrW(931)}
        
        Dim utf7 As New UTF7Encoding()
        
        Dim byteCount As Integer = utf7.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = utf7.GetBytes(chars, 1, 2, bytes, 0)
        
        Console.WriteLine("{0} bytes used to encode characters.", bytesEncodedCount)
        
        Console.Write("Encoded bytes: ")
        Dim b As Byte
        For Each b In  bytes
            Console.Write("[{0}]", b)
        Next b
        Console.WriteLine()
    End Sub
End Class

注解

为了计算存储生成的字节所需的 GetBytes 确切数组大小,应用程序使用 GetByteCount。 若要计算最大数组大小,应用程序应使用 GetMaxByteCountGetByteCount方法通常允许分配较少的内存,而 GetMaxByteCount 方法的执行速度通常更快。

要转换的数据(例如从流读取的数据)可能仅在顺序块中可用。 在这种情况下,或者,如果数据量太大,需要将其划分为较小的块,则应用程序应分别使用 Decoder 方法或 Encoder 方法提供的 GetDecoderGetEncoder

注意

UTF7Encoding 不提供错误检测。 无效字符编码为修改后的 base 64 字符。 出于安全原因,建议应用程序使用 UTF8EncodingUnicodeEncodingUTF32Encoding 并启用错误检测。

另请参阅

适用于

GetBytes(String, Int32, Int32, Byte[], Int32)

Source:
UTF7Encoding.cs
Source:
UTF7Encoding.cs
Source:
UTF7Encoding.cs

将指定 String 中的一组字符编码到指定的字节数组中。

public:
 override int GetBytes(System::String ^ s, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes (string s, int charIndex, int charCount, byte[] bytes, int byteIndex);
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes (string s, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : string * int * int * byte[] * int -> int
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetBytes : string * int * int * byte[] * int -> int
Public Overrides Function GetBytes (s As String, charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer

参数

s
String

包含要编码的字符集的 String

charIndex
Int32

第一个要编码的字符的索引。

charCount
Int32

要编码的字符的数目。

bytes
Byte[]

要包含所产生的字节序列的字节数组。

byteIndex
Int32

要开始写入所产生的字节序列的索引位置。

返回

写入 bytes 的实际字节数。

属性

例外

snull (Nothing)。

- 或 -

bytesnull (Nothing)。

charIndexcharCountbyteIndex 小于零。

- 或 -

charIndexcharCount 不表示 chars中的有效范围。

- 或 -

byteIndex 不是 bytes 中的有效索引。

bytes 中从 byteIndex 到数组结尾没有足够的容量来容纳所产生的字节。

发生了回退(如需进一步说明,请参阅 .NET 中的字符编码)。

-和-

EncoderFallback 设置为 EncoderExceptionFallback

示例

下面的代码示例演示如何使用 GetBytes 方法对 Unicode 字符数组中的一系列元素进行编码,并将编码的字节存储在字节数组的元素范围中。

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Byte>^bytes;
   
   // Unicode characters.
   
   // Pi
   // Sigma
   array<Char>^chars = {L'\u03a0',L'\u03a3',L'\u03a6',L'\u03a9'};
   UTF7Encoding^ utf7 = gcnew UTF7Encoding;
   int byteCount = utf7->GetByteCount( chars, 1, 2 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = utf7->GetBytes( chars, 1, 2, bytes, 0 );
   Console::WriteLine( "{0} bytes used to encode characters.", bytesEncodedCount );
   Console::Write( "Encoded bytes: " );
   IEnumerator^ myEnum = bytes->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "[{0}]", b );
   }

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

class UTF7EncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        UTF7Encoding utf7 = new UTF7Encoding();
        
        int byteCount = utf7.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf7.GetBytes(chars, 1, 2, bytes, 0);
        
        Console.WriteLine(
            "{0} bytes used to encode characters.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}
Imports System.Text
Imports Microsoft.VisualBasic.strings

Class UTF7EncodingExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte
        ' Unicode characters.
        ' ChrW(35)  = #
        ' ChrW(37)  = %
        ' ChrW(928) = Pi
        ' ChrW(931) = Sigma
        Dim chars() As Char = {ChrW(35), ChrW(37), ChrW(928), ChrW(931)}
        
        Dim utf7 As New UTF7Encoding()
        
        Dim byteCount As Integer = utf7.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = utf7.GetBytes(chars, 1, 2, bytes, 0)
        
        Console.WriteLine("{0} bytes used to encode characters.", bytesEncodedCount)
        
        Console.Write("Encoded bytes: ")
        Dim b As Byte
        For Each b In  bytes
            Console.Write("[{0}]", b)
        Next b
        Console.WriteLine()
    End Sub
End Class

注解

为了计算存储生成的字节所需的 GetBytes 确切数组大小,应用程序使用 GetByteCount。 若要计算最大数组大小,应用程序应使用 GetMaxByteCountGetByteCount方法通常允许分配较少的内存,而 GetMaxByteCount 方法的执行速度通常更快。

要转换的数据(例如从流读取的数据)可能仅在顺序块中可用。 在这种情况下,或者,如果数据量太大,需要将其划分为较小的块,则应用程序应分别使用 Decoder 方法或 Encoder 方法提供的 GetDecoderGetEncoder

注意

UTF7Encoding 不提供错误检测。 无效字符编码为修改后的 base 64 字符。 出于安全原因,建议应用程序使用 UTF8EncodingUnicodeEncodingUTF32Encoding 并启用错误检测。

另请参阅

适用于