UnicodeEncoding.GetByteCount Metódus

Definíció

Kiszámítja a karakterkészlet kódolásával előállított bájtok számát.

Túlterhelések

Name Description
GetByteCount(String)

Kiszámítja a megadott sztringben szereplő karakterek kódolásával előállított bájtok számát.

GetByteCount(Char*, Int32)

Kiszámítja a megadott karaktermutatótól kezdődő karakterkészlet kódolásával előállított bájtok számát.

GetByteCount(Char[], Int32, Int32)

Kiszámítja a megadott karaktertömbből származó karakterkészlet kódolásával előállított bájtok számát.

GetByteCount(String)

Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs

Kiszámítja a megadott sztringben szereplő karakterek kódolásával előállított bájtok számát.

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

Paraméterek

s
String

A kódolandó karaktereket tartalmazó sztring.

Válaszok

A megadott karakterek kódolásával előállított bájtok száma.

Kivételek

Az eredményül kapott bájtszám nagyobb, mint az egész számként visszaadható maximális szám.

A hibaészlelés engedélyezve van, és s érvénytelen karaktersorozatot tartalmaz.

Hiba történt (további információ: Acharacter kódolása a .NET)

-és-

EncoderFallback EncoderExceptionFallbackértékre van állítva.

Példák

Az alábbi példa meghívja a GetMaxByteCountGetByteCount(String) sztringek kódolásához szükséges bájtok maximális és tényleges számának kiszámítására szolgáló metódusokat és metódusokat. Azt is megjeleníti, hogy hány bájt szükséges egy bájtfolyam bájtsorrendjellel való tárolásához.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        String chars = "UTF-16 Encoding Example";
        Encoding unicode = Encoding.Unicode;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          unicode.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          unicode.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          unicode.GetByteCount(chars) + unicode.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF-16 Encoding Example':
//          Maximum:         48
//          Actual:          46
//          Actual with BOM: 48
Imports System.Text

Module Example
    Public Sub Main()
        Dim chars As String = "UTF-16 Encoding Example"
        Dim unicode As Encoding = Encoding.Unicode

        Console.WriteLine("Bytes needed to encode '{0}':", chars)
        Console.WriteLine("   Maximum:         {0}",
                          unicode.GetMaxByteCount(chars.Length))
        Console.WriteLine("   Actual:          {0}",
                          unicode.GetByteCount(chars))
        Console.WriteLine("   Actual with BOM: {0}",
                          unicode.GetByteCount(chars) + unicode.GetPreamble().Length)
    End Sub
End Module
' The example displays the following output:
'       Bytes needed to encode 'UTF-16 Encoding Example':
'          Maximum:         48
'          Actual:          46
'          Actual with BOM: 48

Megjegyzések

Az eredményként kapott bájtok tárolásához szükséges GetBytes pontos tömbméret kiszámításához hívja meg a metódust GetByteCount . A maximális tömbméret kiszámításához hívja meg a metódust GetMaxByteCount . A GetByteCount metódus általában kevesebb memóriát foglal le, míg a GetMaxByteCount metódus általában gyorsabban fut.

Hibaészlelés esetén az érvénytelen sorrend miatt ez a metódus egy ArgumentException. Hibaészlelés nélkül a rendszer figyelmen kívül hagyja az érvénytelen sorozatokat, és nincs kivétel.

Important

Annak érdekében, hogy a kódolt bájtok megfelelően legyenek dekódolva, amikor fájlként vagy streamként vannak mentve, előtagként előtagolhatja a kódolt bájtok adatfolyamát egy preambulummal. A bájtfolyam elején (például egy fájlba írandó bájtsor elején) a preambulum beszúrása a fejlesztő feladata, és a preambulumban szereplő bájtok száma nem jelenik meg a GetByteCount(String) metódus által visszaadott értékben.

Lásd még

A következőre érvényes:

GetByteCount(Char*, Int32)

Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs

Fontos

Ez az API nem CLS-kompatibilis.

Kiszámítja a megadott karaktermutatótól kezdődő karakterkészlet kódolásával előállított bájtok számát.

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);
[<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

Paraméterek

chars
Char*

A kódolni kívánt első karakterre mutató mutató.

count
Int32

A kódolandó karakterek száma.

Válaszok

A megadott karakterek kódolásával előállított bájtok száma.

Attribútumok

Kivételek

chars az null.

count kisebb, mint nulla.

-vagy-

Az eredményül kapott bájtszám nagyobb, mint az egész számként visszaadható maximális szám.

A hibaészlelés engedélyezve van, és chars érvénytelen karaktersorozatot tartalmaz.

Hiba történt (további információ: Acharacter kódolása a .NET)

-és-

EncoderFallback EncoderExceptionFallbackértékre van állítva.

Megjegyzések

Az eredményként kapott bájtok tárolásához szükséges pontos tömbméret GetBytes kiszámításához hívja meg a metódust GetByteCount . A maximális tömbméret kiszámításához hívja meg a metódust GetMaxByteCount . A GetByteCount metódus általában kevesebb memóriát foglal le, míg a GetMaxByteCount metódus általában gyorsabban fut.

Hibaészlelés esetén az érvénytelen sorrend miatt ez a metódus egy ArgumentException. Hibaészlelés nélkül a rendszer figyelmen kívül hagyja az érvénytelen sorozatokat, és nincs kivétel.

Important

Annak érdekében, hogy a kódolt bájtok megfelelően legyenek dekódolva, amikor fájlként vagy streamként vannak mentve, előtagként előtagolhatja a kódolt bájtok adatfolyamát egy preambulummal. A bájtfolyam elején (például egy fájlba írandó bájtsor elején) a preambulum beszúrása a fejlesztő feladata, és a preambulumban szereplő bájtok száma nem jelenik meg a GetByteCount metódus által visszaadott értékben.

Lásd még

A következőre érvényes:

GetByteCount(Char[], Int32, Int32)

Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs
Forrás:
UnicodeEncoding.cs

Kiszámítja a megadott karaktertömbből származó karakterkészlet kódolásával előállított bájtok számát.

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

Paraméterek

chars
Char[]

A kódolandó karaktereket tartalmazó karaktertömb.

index
Int32

Az első kódolandó karakter indexe.

count
Int32

A kódolandó karakterek száma.

Válaszok

A megadott karakterek kódolásával előállított bájtok száma.

Kivételek

chars az null (Nothing).

index vagy count kisebb, mint nulla.

-vagy-

index és count ne jelölje az érvényes tartományt a következőben chars: .

-vagy-

Az eredményül kapott bájtszám nagyobb, mint az egész számként visszaadható maximális szám.

A hibaészlelés engedélyezve van, és chars érvénytelen karaktersorozatot tartalmaz.

Hiba történt (további információ: Acharacter kódolása a .NET)

-és-

EncoderFallback EncoderExceptionFallbackértékre van állítva.

Példák

Az alábbi példa egy latin nagybetűs és kisbetűs tömböt tölt fel, és meghívja a GetByteCount(Char[], Int32, Int32) metódust a latin kisbetűk kódolásához szükséges bájtok számának meghatározására. Ezután megjeleníti ezt az információt, valamint a bájtrendelési jel hozzáadásakor szükséges bájtok teljes számát. Összehasonlítja ezt a számot a metódus által GetMaxByteCount visszaadott értékkel, amely a latin kisbetűk kódolásához szükséges bájtok maximális számát jelzi. Az alábbi példa kitölt egy tömböt görög és cirill karakterek kombinációjával, és meghívja a GetByteCount(Char[], Int32, Int32) metódust a cirill karakterek kódolásához szükséges bájtok számának meghatározására. Ezután megjeleníti ezt az információt, valamint a bájtrendelési jel hozzáadásakor szükséges bájtok teljes számát. Összehasonlítja ezt a számot a metódus által GetMaxByteCount visszaadott értékkel, amely a cirill karakterek kódolásához szükséges bájtok maximális számát jelzi.

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 unicode = Encoding.Unicode;

      // 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}",
                        unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          unicode.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:            54
//          Actual:             52
//          Actual with BOM:    54
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 unicode As Encoding = Encoding.Unicode
      
      ' 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}",
                          unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual:          {0,5:N0}",
                          unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual with BOM: {0,5:N0}",
                          unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1) +
                                            unicode.GetPreamble().Length)
   End Sub
End Module
' The example displays the following output:
'       Bytes needed for lowercase Latin characters:
'          Maximum:            54
'          Actual:             52
'          Actual with BOM:    54

Megjegyzések

A kapott bájtok tárolásához szükséges GetBytes pontos tömbméret kiszámításához az alkalmazás a következőt használja GetByteCount: . A maximális tömbméret kiszámításához hívja meg a metódust GetMaxByteCount . A GetByteCount metódus általában kevesebb memóriát foglal le, míg a GetMaxByteCount metódus általában gyorsabban fut.

Ha a hibaészlelés engedélyezve van, az érvénytelen sorrend miatt ez a metódus egy ArgumentException. Hibaészlelés nélkül a rendszer figyelmen kívül hagyja az érvénytelen sorozatokat, és nincs kivétel.

Annak érdekében, hogy a kódolt bájtok megfelelően legyenek dekódolva, amikor fájlként vagy streamként vannak mentve, előtagként előtagolhatja a kódolt bájtok adatfolyamát egy preambulummal. A bájtfolyam elején (például egy fájlba írandó bájtsor elején) a preambulum beszúrása a fejlesztő feladata, és a preambulumban szereplő bájtok száma nem jelenik meg a GetByteCount(Char[], Int32, Int32) metódus által visszaadott értékben.

Lásd még

A következőre érvényes: