UTF8Encoding.GetByteCount Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Berekent het aantal bytes dat wordt geproduceerd door een set tekens te coderen.
Overloads
| Name | Description |
|---|---|
| GetByteCount(String) |
Berekent het aantal bytes dat wordt geproduceerd door de tekens in de opgegeven Stringcode te coderen. |
| GetByteCount(Char*, Int32) |
Berekent het aantal bytes dat wordt geproduceerd door een set tekens te coderen die beginnen bij de opgegeven tekenwijzer. |
| GetByteCount(Char[], Int32, Int32) |
Berekent het aantal bytes dat wordt geproduceerd door een set tekens van de opgegeven tekenmatrix te coderen. |
GetByteCount(String)
Berekent het aantal bytes dat wordt geproduceerd door de tekens in de opgegeven Stringcode te coderen.
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
Parameters
Retouren
Het aantal bytes dat wordt geproduceerd door de opgegeven tekens te coderen.
Uitzonderingen
chars is null.
Het resulterende aantal bytes is groter dan het maximumaantal dat als geheel getal kan worden geretourneerd.
Foutdetectie is ingeschakeld en chars bevat een ongeldige reeks tekens.
Er is een terugval opgetreden (zie Character Encoding in .NET)
en
EncoderFallback is ingesteld op EncoderExceptionFallback.
Voorbeelden
In het volgende voorbeeld worden de GetMaxByteCount en GetByteCount(String) methoden aangeroepen om het maximum en het werkelijke aantal bytes te berekenen dat nodig is om een tekenreeks te coderen. Ook wordt het werkelijke aantal bytes weergegeven dat is vereist voor het opslaan van een bytestroom met een bytevolgordemarkering.
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
Opmerkingen
Als u de exacte matrixgrootte wilt berekenen die is vereist voor GetBytes het opslaan van de resulterende bytes, roept u de GetByteCount methode aan. Als u de maximale matrixgrootte wilt berekenen, roept u de GetMaxByteCount methode aan. De GetByteCount methode wijst doorgaans minder geheugen toe, terwijl de GetMaxByteCount methode over het algemeen sneller wordt uitgevoerd.
Bij foutdetectie zorgt een ongeldige reeks ervoor dat deze methode een ArgumentException uitzondering genereert. Zonder foutdetectie worden ongeldige reeksen genegeerd en wordt er geen uitzondering gegenereerd.
Om ervoor te zorgen dat de gecodeerde bytes correct worden gedecodeerd wanneer ze worden opgeslagen als een bestand of als een stroom, kunt u een stroom gecodeerde bytes vooraf laten gaan met een preparate. Het invoegen van de preambule aan het begin van een bytestroom (zoals aan het begin van een reeks bytes die naar een bestand moeten worden geschreven) is de verantwoordelijkheid van de ontwikkelaar en het aantal bytes in de preambule wordt niet weerspiegeld in de waarde die door de GetByteCount methode wordt geretourneerd.
Zie ook
Van toepassing op
GetByteCount(Char*, Int32)
Belangrijk
Deze API is niet CLS-conform.
Berekent het aantal bytes dat wordt geproduceerd door een set tekens te coderen die beginnen bij de opgegeven tekenwijzer.
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
Parameters
- chars
- Char*
Een aanwijzer naar het eerste teken om te coderen.
- count
- Int32
Het aantal tekens dat moet worden gecodeerd.
Retouren
Het aantal bytes dat wordt geproduceerd door de opgegeven tekens te coderen.
- Kenmerken
Uitzonderingen
chars is null.
count is kleiner dan nul.
– of –
Het resulterende aantal bytes is groter dan het maximumaantal dat als geheel getal kan worden geretourneerd.
Foutdetectie is ingeschakeld en chars bevat een ongeldige reeks tekens.
Er is een terugval opgetreden (zie Character Encoding in .NET voor een volledige uitleg).
en
EncoderFallback is ingesteld op EncoderExceptionFallback.
Opmerkingen
Als u de exacte matrixgrootte wilt berekenen die door de GetBytes methode is vereist om de resulterende bytes op te slaan, roept u de GetByteCount methode aan. Als u de maximale matrixgrootte wilt berekenen, roept u de GetMaxByteCount methode aan. De GetByteCount methode wijst doorgaans minder geheugen toe, terwijl de GetMaxByteCount methode over het algemeen sneller wordt uitgevoerd.
Bij foutdetectie zorgt een ongeldige reeks ervoor dat deze methode een ArgumentException uitzondering genereert. Zonder foutdetectie worden ongeldige reeksen genegeerd en wordt er geen uitzondering gegenereerd.
Om ervoor te zorgen dat de gecodeerde bytes correct worden gedecodeerd wanneer ze worden opgeslagen als een bestand of als een stroom, kunt u een stroom gecodeerde bytes vooraf laten gaan met een preparate. Het invoegen van de preambule aan het begin van een bytestroom (zoals aan het begin van een reeks bytes die naar een bestand moeten worden geschreven) is de verantwoordelijkheid van de ontwikkelaar en het aantal bytes in de preambule wordt niet weerspiegeld in de waarde die door de GetByteCount methode wordt geretourneerd.
Zie ook
Van toepassing op
GetByteCount(Char[], Int32, Int32)
Berekent het aantal bytes dat wordt geproduceerd door een set tekens van de opgegeven tekenmatrix te coderen.
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
Parameters
- chars
- Char[]
De tekenmatrix die de set tekens bevat die moeten worden gecodeerd.
- index
- Int32
De index van het eerste teken om te coderen.
- count
- Int32
Het aantal tekens dat moet worden gecodeerd.
Retouren
Het aantal bytes dat wordt geproduceerd door de opgegeven tekens te coderen.
Uitzonderingen
chars is null.
index of count kleiner is dan nul.
– of –
index en count geef geen geldig bereik aan in chars.
– of –
Het resulterende aantal bytes is groter dan het maximumaantal dat als geheel getal kan worden geretourneerd.
Foutdetectie is ingeschakeld en chars bevat een ongeldige reeks tekens.
Er is een terugval opgetreden (zie Character Encoding in .NET)
en
De eigenschap EncoderFallback is ingesteld op EncoderExceptionFallback.
Voorbeelden
In het volgende voorbeeld wordt een matrix gevuld met een Latijnse hoofdletter en kleine letters en wordt de GetByteCount(Char[], Int32, Int32) methode aangeroepen om het aantal bytes te bepalen dat nodig is om de Latijnse kleine letters te coderen. Vervolgens wordt deze informatie weergegeven, samen met het totale aantal bytes dat nodig is als er een byteordermarkering wordt toegevoegd. Het vergelijkt dit getal met de waarde die wordt geretourneerd door de GetMaxByteCount methode, wat het maximum aantal bytes aangeeft dat nodig is om de Latijnse kleine letters te coderen.
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
Opmerkingen
Als u de exacte matrixgrootte wilt berekenen die nodig is om GetBytes de resulterende bytes op te slaan, roept u de methode uses GetByteCount aan. Als u de maximale matrixgrootte wilt berekenen, roept u de GetMaxByteCount methode aan. De GetByteCount methode wijst doorgaans minder geheugen toe, terwijl de GetMaxByteCount methode over het algemeen sneller wordt uitgevoerd.
Bij foutdetectie zorgt een ongeldige reeks ervoor dat deze methode een ArgumentException uitzondering genereert. Zonder foutdetectie worden ongeldige reeksen genegeerd en wordt er geen uitzondering gegenereerd.
Om ervoor te zorgen dat de gecodeerde bytes correct worden gedecodeerd wanneer ze worden opgeslagen als een bestand of als een stroom, kunt u een stroom gecodeerde bytes vooraf laten gaan met een preparate. Het invoegen van de preambule aan het begin van een bytestroom (zoals aan het begin van een reeks bytes die naar een bestand moeten worden geschreven) is de verantwoordelijkheid van de ontwikkelaar en het aantal bytes in de preambule wordt niet weerspiegeld in de waarde die door de GetByteCount methode wordt geretourneerd.