UTF8Encoding.GetByteCount Método

Definição

Calcula o número de bytes produzidos pela codificação de um conjunto de caracteres.Calculates the number of bytes produced by encoding a set of characters.

Sobrecargas

GetByteCount(ReadOnlySpan<Char>)

Calcula o número de bytes produzidos codificando o intervalo de caracteres especificado.Calculates the number of bytes produced by encoding the specified character span.

GetByteCount(String)

Calcula o número de bytes produzidos codificando todos os caracteres no String especificado.Calculates the number of bytes produced by encoding the characters in the specified String.

GetByteCount(Char*, Int32)

Calcula o número de bytes produzidos ao codificar um conjunto de caracteres, começando no ponteiro de caracteres especificado.Calculates the number of bytes produced by encoding a set of characters starting at the specified character pointer.

GetByteCount(Char[], Int32, Int32)

Calcula o número de bytes produzidos codificando um conjunto de caracteres da matriz de caracteres especificada.Calculates the number of bytes produced by encoding a set of characters from the specified character array.

GetByteCount(ReadOnlySpan<Char>)

Calcula o número de bytes produzidos codificando o intervalo de caracteres especificado.Calculates the number of bytes produced by encoding the specified character span.

public:
 override int GetByteCount(ReadOnlySpan<char> chars);
public override int GetByteCount (ReadOnlySpan<char> chars);
override this.GetByteCount : ReadOnlySpan<char> -> int
Public Overrides Function GetByteCount (chars As ReadOnlySpan(Of Char)) As Integer

Parâmetros

chars
ReadOnlySpan<Char>

O intervalo que contém o conjunto de caracteres a ser codificado.The span that contains the set of characters to encode.

Retornos

Int32

O número de bytes produzidos pela codificação do intervalo de caracteres especificado.The number of bytes produced by encoding the specified character span.

Exceções

A detecção de erros está habilitada e chars contém uma sequência de caracteres inválida.Error detection is enabled, and chars contains an invalid sequence of characters.

Ocorreu um fallback (confira Codificação de caracteres no .NET para obter uma explicação completa).A fallback occurred (see Character Encoding in .NET for complete explanation).

-e--and- EncoderFallback é definido como EncoderExceptionFallback.EncoderFallback is set to EncoderExceptionFallback.

Comentários

Para calcular o tamanho exato exigido pelo GetBytes para armazenar os bytes resultantes, chame o GetByteCount método.To calculate the exact size required by GetBytes to store the resulting bytes, you call the GetByteCount method. Para calcular o tamanho máximo, você chama o GetMaxByteCount método.To calculate the maximum size, you call the GetMaxByteCount method. O GetByteCount método geralmente aloca menos memória, enquanto o GetMaxByteCount método geralmente é executado mais rapidamente.The GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

Com a detecção de erro, uma sequência inválida faz com que esse método gere uma ArgumentException exceção.With error detection, an invalid sequence causes this method to throw an ArgumentException exception. Sem a detecção de erros, as sequências inválidas são ignoradas e nenhuma exceção é lançada.Without error detection, invalid sequences are ignored, and no exception is thrown.

Para garantir que os bytes codificados sejam decodificados corretamente quando eles são salvos como um arquivo ou como um fluxo, você pode prefixar um fluxo de bytes codificados com um preâmbulo.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. A inserção do preâmbulo no início de um fluxo de bytes (como no início de uma série de bytes a ser gravado em um arquivo) é a responsabilidade do desenvolvedor, e o número de bytes no preâmbulo não é refletido no valor retornado pelo GetByteCount método.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble is not reflected in the value returned by the GetByteCount method.

Aplica-se a

GetByteCount(String)

Calcula o número de bytes produzidos codificando todos os caracteres no String especificado.Calculates the number of bytes produced by encoding the characters in the specified String.

public:
 override int GetByteCount(System::String ^ chars);
public override int GetByteCount (string chars);
override this.GetByteCount : string -> int
Public Overrides Function GetByteCount (chars As String) As Integer

Parâmetros

chars
String

O String que contém o conjunto de caracteres a ser codificado.The String containing the set of characters to encode.

Retornos

Int32

O número de bytes produzidos por codificação de caracteres especificados.The number of bytes produced by encoding the specified characters.

Exceções

chars é null.chars is null.

O número de bytes resultante é maior que o número máximo que pode ser retornado como um inteiro.The resulting number of bytes is greater than the maximum number that can be returned as an integer.

A detecção de erros está habilitada e chars contém uma sequência de caracteres inválida.Error detection is enabled, and chars contains an invalid sequence of characters.

Ocorreu um fallback (saiba mais em Codificação de caracteres no .NET)A fallback occurred (for more information, see Character Encoding in .NET) -e--and- EncoderFallback é definido como EncoderExceptionFallback.EncoderFallback is set to EncoderExceptionFallback.

Exemplos

O exemplo a seguir chama GetMaxByteCount os GetByteCount(String) métodos e para calcular o número máximo e real de bytes necessários para codificar uma cadeia de caracteres.The following example calls the GetMaxByteCount and GetByteCount(String) methods to calculate the maximum and actual number of bytes required to encode a string. Ele também exibe o número real de bytes necessários para armazenar um fluxo de bytes com uma marca de ordem de byte.It also displays the actual number of bytes required to store a byte stream with a byte order mark.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        String chars = "UTF8 Encoding Example";
        Encoding utf8 = Encoding.UTF8;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF8 Encoding Example':
//          Maximum:         66
//          Actual:          21
//          Actual with BOM: 24
Imports System.Text

Module Example
    Public Sub Main()
        Dim chars As String = "UTF8 Encoding Example"
        Dim utf8 As Encoding = Encoding.UTF8

        Console.WriteLine("Bytes needed to encode '{0}':", chars)
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length))
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars))
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length)
    End Sub
End Module
' The example displays the following output:
'       Bytes needed to encode 'UTF8 Encoding Example':
'          Maximum:         66
'          Actual:          21
'          Actual with BOM: 24

Comentários

Para calcular o tamanho exato da matriz exigido pelo GetBytes para armazenar os bytes resultantes, chame o GetByteCount método.To calculate the exact array size required by GetBytes to store the resulting bytes, you call the GetByteCount method. Para calcular o tamanho máximo da matriz, chame o GetMaxByteCount método.To calculate the maximum array size, you call the GetMaxByteCount method. O GetByteCount método geralmente aloca menos memória, enquanto o GetMaxByteCount método geralmente é executado mais rapidamente.The GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

Com a detecção de erro, uma sequência inválida faz com que esse método gere uma ArgumentException exceção.With error detection, an invalid sequence causes this method to throw an ArgumentException exception. Sem a detecção de erros, as sequências inválidas são ignoradas e nenhuma exceção é lançada.Without error detection, invalid sequences are ignored, and no exception is thrown.

Para garantir que os bytes codificados sejam decodificados corretamente quando eles são salvos como um arquivo ou como um fluxo, você pode prefixar um fluxo de bytes codificados com um preâmbulo.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. A inserção do preâmbulo no início de um fluxo de bytes (como no início de uma série de bytes a ser gravado em um arquivo) é a responsabilidade do desenvolvedor, e o número de bytes no preâmbulo não é refletido no valor retornado pelo GetByteCount método.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble is not reflected in the value returned by the GetByteCount method.

Confira também

Aplica-se a

GetByteCount(Char*, Int32)

Importante

Esta API não está em conformidade com CLS.

Calcula o número de bytes produzidos ao codificar um conjunto de caracteres, começando no ponteiro de caracteres especificado.Calculates the number of bytes produced by encoding a set of characters starting at the specified character pointer.

public:
 override int GetByteCount(char* chars, int count);
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetByteCount (char* chars, int count);
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetByteCount : nativeptr<char> * int -> int

Parâmetros

chars
Char*

Um ponteiro para o primeiro caractere a ser codificado.A pointer to the first character to encode.

count
Int32

O número de caracteres a ser codificado.The number of characters to encode.

Retornos

Int32

O número de bytes produzidos por codificação de caracteres especificados.The number of bytes produced by encoding the specified characters.

Atributos

Exceções

chars é null.chars is null.

count é menor que zero.count is less than zero.

- ou --or- O número de bytes resultante é maior que o número máximo que pode ser retornado como um inteiro.The resulting number of bytes is greater than the maximum number that can be returned as an integer.

A detecção de erros está habilitada e chars contém uma sequência de caracteres inválida.Error detection is enabled, and chars contains an invalid sequence of characters.

Ocorreu um fallback (confira Codificação de caracteres no .NET para obter uma explicação completa).A fallback occurred (see Character Encoding in .NET for a complete explanation).

-e--and- EncoderFallback é definido como EncoderExceptionFallback.EncoderFallback is set to EncoderExceptionFallback.

Comentários

Para calcular o tamanho exato da matriz exigido pelo GetBytes método para armazenar os bytes resultantes, chame o GetByteCount método.To calculate the exact array size required by the GetBytes method to store the resulting bytes, you call the GetByteCount method. Para calcular o tamanho máximo da matriz, chame o GetMaxByteCount método.To calculate the maximum array size, you call the GetMaxByteCount method. O GetByteCount método geralmente aloca menos memória, enquanto o GetMaxByteCount método geralmente é executado mais rapidamente.The GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

Com a detecção de erro, uma sequência inválida faz com que esse método gere uma ArgumentException exceção.With error detection, an invalid sequence causes this method to throw an ArgumentException exception. Sem a detecção de erros, as sequências inválidas são ignoradas e nenhuma exceção é lançada.Without error detection, invalid sequences are ignored, and no exception is thrown.

Para garantir que os bytes codificados sejam decodificados corretamente quando eles são salvos como um arquivo ou como um fluxo, você pode prefixar um fluxo de bytes codificados com um preâmbulo.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. A inserção do preâmbulo no início de um fluxo de bytes (como no início de uma série de bytes a ser gravado em um arquivo) é a responsabilidade do desenvolvedor, e o número de bytes no preâmbulo não é refletido no valor retornado pelo GetByteCount método.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble is not reflected in the value returned by the GetByteCount method.

Confira também

Aplica-se a

GetByteCount(Char[], Int32, Int32)

Calcula o número de bytes produzidos codificando um conjunto de caracteres da matriz de caracteres especificada.Calculates the number of bytes produced by encoding a set of characters from the specified character array.

public:
 override int GetByteCount(cli::array <char> ^ chars, int index, int count);
public override int GetByteCount (char[] chars, int index, int count);
override this.GetByteCount : char[] * int * int -> int
Public Overrides Function GetByteCount (chars As Char(), index As Integer, count As Integer) As Integer

Parâmetros

chars
Char[]

A matriz de caracteres que contém o conjunto de caracteres a serem codificados.The character array containing the set of characters to encode.

index
Int32

O índice do primeiro caractere a ser codificado.The index of the first character to encode.

count
Int32

O número de caracteres a ser codificado.The number of characters to encode.

Retornos

Int32

O número de bytes produzidos por codificação de caracteres especificados.The number of bytes produced by encoding the specified characters.

Exceções

chars é null.chars is null.

index ou count é menor que zero.index or count is less than zero.

- ou --or- index e count não denotam um intervalo válido em chars.index and count do not denote a valid range in chars.

- ou --or- O número de bytes resultante é maior que o número máximo que pode ser retornado como um inteiro.The resulting number of bytes is greater than the maximum number that can be returned as an integer.

A detecção de erros está habilitada e chars contém uma sequência de caracteres inválida.Error detection is enabled, and chars contains an invalid sequence of characters.

Ocorreu um fallback (saiba mais em Codificação de caracteres no .NET)A fallback occurred (for more information, see Character Encoding in .NET) -e--and- A propriedade EncoderFallback está definida como EncoderExceptionFallback.The EncoderFallback property is set to EncoderExceptionFallback.

Exemplos

O exemplo a seguir popula uma matriz com caracteres maiúsculos latinos e minúsculos e chama o GetByteCount(Char[], Int32, Int32) método para determinar o número de bytes necessários para codificar os caracteres latinos minúsculos.The following example populates an array with a Latin uppercase and lowercase characters and calls the GetByteCount(Char[], Int32, Int32) method to determine the number of bytes needed to encode the Latin lowercase characters. Em seguida, ele exibe essas informações junto com o número total de bytes necessários se uma marca de ordem de byte for adicionada.It then displays this information along with the total number of bytes needed if a byte order mark is added. Ele compara esse número com o valor retornado pelo GetMaxByteCount método, que indica o número máximo de bytes necessários para codificar os caracteres latinos minúsculos.It compares this number with the value returned by the GetMaxByteCount method, which indicates maximum number of bytes needed to encode the Latin lowercase characters.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      int uppercaseStart = 0x0041;
      int uppercaseEnd = 0x005a;
      int lowercaseStart = 0x0061;
      int lowercaseEnd = 0x007a;
      // Instantiate a UTF8 encoding object with BOM support.
      Encoding utf8 = new UTF8Encoding(true);

      // Populate array with characters.
      char[] chars = new char[lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 2];
      int index = 0;
      for (int ctr = uppercaseStart; ctr <= uppercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }
      for (int ctr = lowercaseStart; ctr <= lowercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }

      // Display the bytes needed for the lowercase characters.
      Console.WriteLine("Bytes needed for lowercase Latin characters:");
      Console.WriteLine("   Maximum:         {0,5:N0}",
                        utf8.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          utf8.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:            81
//          Actual:             26
//          Actual with BOM:    29
Imports System.Text

Module Example
   Public Sub Main()
      Dim uppercaseStart As Integer = &h0041
      Dim uppercaseEnd As Integer = &h005a
      Dim lowercaseStart As Integer = &h0061
      Dim lowercaseEnd As Integer = &h007a
      ' Instantiate a UTF8 encoding object with BOM support.
      Dim utf8 As New UTF8Encoding(True)
      
      ' Populate array with characters.
      Dim chars(lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 1) As Char
      Dim index As Integer = 0
      For ctr As Integer = uppercaseStart To uppercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next
      For ctr As Integer = lowercaseStart To lowercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next

      ' Display the bytes needed for the lowercase characters.
        Console.WriteLine("Bytes needed for lowercase Latin characters:")
        Console.WriteLine("   Maximum:         {0,5:N0}",
                          utf8.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual:          {0,5:N0}",
                          utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual with BOM: {0,5:N0}",
                          utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1) +
                                            utf8.GetPreamble().Length)
   End Sub
End Module
' The example displays the following output:
'       Bytes needed for lowercase Latin characters:
'          Maximum:            81
'          Actual:             26
'          Actual with BOM:    29

Comentários

Para calcular o tamanho exato da matriz exigido pelo GetBytes para armazenar os bytes resultantes, você chama o GetByteCount método use.To calculate the exact array size required by GetBytes to store the resulting bytes, you call the uses GetByteCount method. Para calcular o tamanho máximo da matriz, chame o GetMaxByteCount método.To calculate the maximum array size, you call the GetMaxByteCount method. O GetByteCount método geralmente aloca menos memória, enquanto o GetMaxByteCount método geralmente é executado mais rapidamente.The GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

Com a detecção de erro, uma sequência inválida faz com que esse método gere uma ArgumentException exceção.With error detection, an invalid sequence causes this method to throw an ArgumentException exception. Sem a detecção de erros, as sequências inválidas são ignoradas e nenhuma exceção é lançada.Without error detection, invalid sequences are ignored, and no exception is thrown.

Para garantir que os bytes codificados sejam decodificados corretamente quando eles são salvos como um arquivo ou como um fluxo, você pode prefixar um fluxo de bytes codificados com um preâmbulo.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. A inserção do preâmbulo no início de um fluxo de bytes (como no início de uma série de bytes a ser gravado em um arquivo) é a responsabilidade do desenvolvedor, e o número de bytes no preâmbulo não é refletido no valor retornado pelo GetByteCount método.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble is not reflected in the value returned by the GetByteCount method.

Confira também

Aplica-se a