UTF8Encoding.GetByteCount Método

Definição

Calcula o número de bytes produzidos ao codificar um conjunto de caracteres.

Sobrecargas

Name Description
GetByteCount(String)

Calcula o número de bytes produzidos ao codificar os caracteres no especificado String.

GetByteCount(Char*, Int32)

Calcula o número de bytes produzidos ao codificar um conjunto de caracteres a partir do ponteiro especificado.

GetByteCount(Char[], Int32, Int32)

Calcula o número de bytes produzidos ao codificar um conjunto de caracteres a partir do array de caracteres especificado.

GetByteCount(String)

Calcula o número de bytes produzidos ao codificar os caracteres no especificado 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 codificar.

Devoluções

O número de bytes produzidos pela codificação dos caracteres especificados.

Exceções

chars é null.

O número resultante de bytes é maior do que o número máximo que pode ser devolvido como inteiro.

A deteção de erros está ativada e chars contém uma sequência inválida de caracteres.

Ocorreu um recurso de recurso (para mais informações, veja Codificação de Caracteres em .NET)

- e -

EncoderFallback está definido como EncoderExceptionFallback.

Exemplos

O exemplo seguinte chama os GetMaxByteCount métodos e GetByteCount(String) para calcular o número máximo e real de bytes necessários para codificar uma string. Também mostra o número real de bytes necessários para armazenar um fluxo de bytes com uma marca de ordem de bytes.

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

Observações

Para calcular o tamanho exato do array necessário GetBytes para armazenar os bytes resultantes, chama-se o GetByteCount método. Para calcular o tamanho máximo do array, chama-se o GetMaxByteCount método. O GetByteCount método geralmente aloca menos memória, enquanto o GetMaxByteCount método geralmente executa mais rapidamente.

Com a deteção de erros, uma sequência inválida faz com que este método crie uma ArgumentException exceção. Sem deteção de erros, as sequências inválidas são ignoradas e nenhuma exceção é lançada.

Para garantir que os bytes codificados são devidamente descodificados quando são guardados como ficheiro ou fluxo, pode prefixar um fluxo de bytes codificados com um preâmbulo. Inserir o preâmbulo no início de um fluxo de bytes (como no início de uma série de bytes a ser escrito num ficheiro) é responsabilidade do programador, e o número de bytes no preâmbulo não é refletido no valor devolvido pelo GetByteCount método.

Ver 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 a partir do ponteiro especificado.

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);
[System.CLSCompliant(false)]
public override int GetByteCount(char* chars, int count);
[<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
[<System.CLSCompliant(false)>]
override this.GetByteCount : nativeptr<char> * int -> int

Parâmetros

chars
Char*

Um apontador para o primeiro carácter a codificar.

count
Int32

O número de caracteres a codificar.

Devoluções

O número de bytes produzidos pela codificação dos caracteres especificados.

Atributos

Exceções

chars é null.

count é inferior a zero.

-ou-

O número resultante de bytes é maior do que o número máximo que pode ser devolvido como inteiro.

A deteção de erros está ativada e chars contém uma sequência inválida de caracteres.

Ocorreu um plano B (ver Codificação de Caracteres em .NET para uma explicação completa).

- e -

EncoderFallback está definido como EncoderExceptionFallback.

Observações

Para calcular o tamanho exato do array exigido pelo GetBytes método para armazenar os bytes resultantes, chama-se o GetByteCount método. Para calcular o tamanho máximo do array, chama-se o GetMaxByteCount método. O GetByteCount método geralmente aloca menos memória, enquanto o GetMaxByteCount método geralmente executa mais rapidamente.

Com a deteção de erros, uma sequência inválida faz com que este método crie uma ArgumentException exceção. Sem deteção de erros, as sequências inválidas são ignoradas e nenhuma exceção é lançada.

Para garantir que os bytes codificados são devidamente descodificados quando são guardados como ficheiro ou fluxo, pode prefixar um fluxo de bytes codificados com um preâmbulo. Inserir o preâmbulo no início de um fluxo de bytes (como no início de uma série de bytes a ser escrito num ficheiro) é responsabilidade do programador, e o número de bytes no preâmbulo não é refletido no valor devolvido pelo GetByteCount método.

Ver também

Aplica-se a

GetByteCount(Char[], Int32, Int32)

Calcula o número de bytes produzidos ao codificar um conjunto de caracteres a partir do array de caracteres especificado.

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[]

O array de caracteres que contém o conjunto de caracteres a codificar.

index
Int32

O índice do primeiro carácter a codificar.

count
Int32

O número de caracteres a codificar.

Devoluções

O número de bytes produzidos pela codificação dos caracteres especificados.

Exceções

chars é null.

index ou count é inferior a zero.

-ou-

index e count não denotam um intervalo válido em chars.

-ou-

O número resultante de bytes é maior do que o número máximo que pode ser devolvido como inteiro.

A deteção de erros está ativada e chars contém uma sequência inválida de caracteres.

Ocorreu um recurso de recurso (para mais informações, veja Codificação de Caracteres em .NET)

- e -

A propriedade EncoderFallback está definida como EncoderExceptionFallback.

Exemplos

O exemplo seguinte preenche um array com caracteres latinos maiúsculos 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. Depois, apresenta esta informação juntamente com o número total de bytes necessários caso seja adicionada uma marca de ordem de bytes. Compara este número com o valor devolvido pelo GetMaxByteCount método, que indica o número máximo de bytes necessários para codificar os caracteres latinos minúsculos.

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

Observações

Para calcular o tamanho exato do array necessário GetBytes para armazenar os bytes resultantes, chama-se o método dos usos GetByteCount . Para calcular o tamanho máximo do array, chama-se o GetMaxByteCount método. O GetByteCount método geralmente aloca menos memória, enquanto o GetMaxByteCount método geralmente executa mais rapidamente.

Com a deteção de erros, uma sequência inválida faz com que este método crie uma ArgumentException exceção. Sem deteção de erros, as sequências inválidas são ignoradas e nenhuma exceção é lançada.

Para garantir que os bytes codificados são devidamente descodificados quando são guardados como ficheiro ou fluxo, pode prefixar um fluxo de bytes codificados com um preâmbulo. Inserir o preâmbulo no início de um fluxo de bytes (como no início de uma série de bytes a ser escrito num ficheiro) é responsabilidade do programador, e o número de bytes no preâmbulo não é refletido no valor devolvido pelo GetByteCount método.

Ver também

Aplica-se a