UnicodeEncoding.GetByteCount Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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
s az null.
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ó:
-é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ó:
-é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ó:
-é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.