UTF32Encoding.GetBytes 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.
Egy karakterkészletet bájtok sorozatába kódol.
Túlterhelések
| Name | Description |
|---|---|
| GetBytes(Char*, Int32, Byte*, Int32) |
A megadott karaktermutatótól kezdődő karakterkészletet bájtok sorozatába kódolja, amelyek a megadott bájtmutatótól kezdve vannak tárolva. |
| GetBytes(Char[], Int32, Int32, Byte[], Int32) |
Egy karakterkészletet kódol a megadott karaktertömbből a megadott bájttömbbe. |
| GetBytes(String, Int32, Int32, Byte[], Int32) |
A megadott String bájttömbbe kódol egy karakterkészletet. |
GetBytes(Char*, Int32, Byte*, Int32)
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
Fontos
Ez az API nem CLS-kompatibilis.
A megadott karaktermutatótól kezdődő karakterkészletet bájtok sorozatába kódolja, amelyek a megadott bájtmutatótól kezdve vannak tárolva.
public:
override int GetBytes(char* chars, int charCount, System::Byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetBytes(char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
public override int GetBytes(char* chars, int charCount, byte* bytes, int byteCount);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
Paraméterek
- chars
- Char*
A kódolni kívánt első karakterre mutató mutató.
- charCount
- Int32
A kódolandó karakterek száma.
- bytes
- Byte*
Egy mutató arra a helyre, ahol elkezdi írni az eredményként kapott bájtsorozatot.
- byteCount
- Int32
Az írható bájtok maximális száma.
Válaszok
A paraméter által bytes megadott helyen írt bájtok tényleges száma.
- Attribútumok
Kivételek
charCount vagy byteCount kisebb, mint nulla.
A hibaészlelés engedélyezve van, és chars érvénytelen karaktersorozatot tartalmaz.
-vagy-
byteCount kisebb, mint az eredményként kapott bájtok száma.
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 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.
Az átalakítandó adatok, például a streamből beolvasott adatok csak szekvenciális blokkokban érhetők el. Ebben az esetben, vagy ha az adatok mennyisége olyan nagy, hogy kisebb blokkokra kell osztani, az alkalmazás a Decoder metódus vagy Encoder a GetDecoder metódus által GetEncoder megadott vagy megadott adatokat használja.
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) történő preambulum beszúrása a fejlesztő feladata. A GetBytes metódus nem előszab előre egy preambulumot a kódolt bájtok sorozatának elejére.
Lásd még
A következőre érvényes:
GetBytes(Char[], Int32, Int32, Byte[], Int32)
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
Egy karakterkészletet kódol a megadott karaktertömbből a megadott bájttömbbe.
public:
override int GetBytes(cli::array <char> ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : char[] * int * int * byte[] * int -> int
Public Overrides Function GetBytes (chars As Char(), charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer
Paraméterek
- chars
- Char[]
A kódolandó karaktereket tartalmazó karaktertömb.
- charIndex
- Int32
Az első kódolandó karakter indexe.
- charCount
- Int32
A kódolandó karakterek száma.
- bytes
- Byte[]
Az eredményként kapott bájtsorozatot tartalmazó bájttömb.
- byteIndex
- Int32
Az az index, amelynél elkezdi írni az eredményként kapott bájtsorozatot.
Válaszok
A beírt bytesbájtok tényleges száma.
Kivételek
charIndex vagy charCountbyteIndex kisebb, mint nulla.
-vagy-
charIndex és charCount ne jelölje az érvényes tartományt a következőben chars: .
-vagy-
byteIndex érvénytelen index a következőben bytes: .
A hibaészlelés engedélyezve van, és chars érvénytelen karaktersorozatot tartalmaz.
-vagy-
bytes nem rendelkezik elegendő kapacitással a tömb végétől byteIndex a kapott bájtok elhelyezéséhez.
Hiba történt (további információ:
-és-
EncoderFallback EncoderExceptionFallbackértékre van állítva.
Példák
Az alábbi példa meghatározza a karaktertömb három karakterének kódolásához szükséges bájtok számát, majd kódolja a karaktereket, és megjeleníti az eredményként kapott bájtokat.
using System;
using System.Text;
public class SamplesUTF32Encoding {
public static void Main() {
// The characters to encode:
// Latin Small Letter Z (U+007A)
// Latin Small Letter A (U+0061)
// Combining Breve (U+0306)
// Latin Small Letter AE With Acute (U+01FD)
// Greek Small Letter Beta (U+03B2)
// a high-surrogate value (U+D8FF)
// a low-surrogate value (U+DCFF)
char[] myChars = new char[7] { 'z', 'a', '\u0306', '\u01FD', '\u03B2', '\uD8FF', '\uDCFF' };
// Create instances of different encodings.
UTF7Encoding u7 = new UTF7Encoding();
UTF8Encoding u8Nobom = new UTF8Encoding( false, true );
UTF8Encoding u8Bom = new UTF8Encoding( true, true );
UTF32Encoding u32Nobom = new UTF32Encoding( false, false, true );
UTF32Encoding u32Bom = new UTF32Encoding( false, true, true );
// Encode three characters starting at index 4 and print out the counts and the resulting bytes.
PrintCountsAndBytes( myChars, 4, 3, u7 );
PrintCountsAndBytes( myChars, 4, 3, u8Nobom );
PrintCountsAndBytes( myChars, 4, 3, u8Bom );
PrintCountsAndBytes( myChars, 4, 3, u32Nobom );
PrintCountsAndBytes( myChars, 4, 3, u32Bom );
}
public static void PrintCountsAndBytes( char[] chars, int index, int count, Encoding enc ) {
// Display the name of the encoding used.
Console.Write( "{0,-25} :", enc.ToString() );
// Display the exact byte count.
int iBC = enc.GetByteCount( chars, index, count );
Console.Write( " {0,-3}", iBC );
// Display the maximum byte count.
int iMBC = enc.GetMaxByteCount( count );
Console.Write( " {0,-3} :", iMBC );
// Get the byte order mark, if any.
byte[] preamble = enc.GetPreamble();
// Combine the preamble and the encoded bytes.
byte[] bytes = new byte[preamble.Length + iBC];
Array.Copy( preamble, bytes, preamble.Length );
enc.GetBytes( chars, index, count, bytes, preamble.Length );
// Display all the encoded bytes.
PrintHexBytes( bytes );
}
public static void PrintHexBytes( byte[] bytes ) {
if (( bytes == null ) || ( bytes.Length == 0 ))
{
Console.WriteLine( "<none>" );
}
else {
for ( int i = 0; i < bytes.Length; i++ )
Console.Write( "{0:X2} ", bytes[i] );
Console.WriteLine();
}
}
}
/*
This code produces the following output.
System.Text.UTF7Encoding : 10 11 :2B 41 37 4C 59 2F 39 7A 2F 2D
System.Text.UTF8Encoding : 6 12 :CE B2 F1 8F B3 BF
System.Text.UTF8Encoding : 6 12 :EF BB BF CE B2 F1 8F B3 BF
System.Text.UTF32Encoding : 8 12 :B2 03 00 00 FF FC 04 00
System.Text.UTF32Encoding : 8 12 :FF FE 00 00 B2 03 00 00 FF FC 04 00
*/
Imports System.Text
Public Class SamplesUTF32Encoding
Public Shared Sub Main()
' The characters to encode:
' Latin Small Letter Z (U+007A)
' Latin Small Letter A (U+0061)
' Combining Breve (U+0306)
' Latin Small Letter AE With Acute (U+01FD)
' Greek Small Letter Beta (U+03B2)
' a high-surrogate value (U+D8FF)
' a low-surrogate value (U+DCFF)
Dim myChars() As Char = {"z"c, "a"c, ChrW(&H0306), ChrW(&H01FD), ChrW(&H03B2), ChrW(&HD8FF), ChrW(&HDCFF)}
' Create instances of different encodings.
Dim u7 As New UTF7Encoding()
Dim u8Nobom As New UTF8Encoding(False, True)
Dim u8Bom As New UTF8Encoding(True, True)
Dim u32Nobom As New UTF32Encoding(False, False, True)
Dim u32Bom As New UTF32Encoding(False, True, True)
' Encode three characters starting at index 4 and print out the counts and the resulting bytes.
PrintCountsAndBytes(myChars, 4, 3, u7)
PrintCountsAndBytes(myChars, 4, 3, u8Nobom)
PrintCountsAndBytes(myChars, 4, 3, u8Bom)
PrintCountsAndBytes(myChars, 4, 3, u32Nobom)
PrintCountsAndBytes(myChars, 4, 3, u32Bom)
End Sub
Public Shared Sub PrintCountsAndBytes(chars() As Char, index As Integer, count As Integer, enc As Encoding)
' Display the name of the encoding used.
Console.Write("{0,-25} :", enc.ToString())
' Display the exact byte count.
Dim iBC As Integer = enc.GetByteCount(chars, index, count)
Console.Write(" {0,-3}", iBC)
' Display the maximum byte count.
Dim iMBC As Integer = enc.GetMaxByteCount(count)
Console.Write(" {0,-3} :", iMBC)
' Get the byte order mark, if any.
Dim preamble As Byte() = enc.GetPreamble()
' Combine the preamble and the encoded bytes.
' NOTE: In Visual Basic, arrays contain one extra element by default.
' The following line creates an array with the exact number of elements required.
Dim bytes(preamble.Length + iBC - 1) As Byte
Array.Copy(preamble, bytes, preamble.Length)
enc.GetBytes(chars, index, count, bytes, preamble.Length)
' Display all the encoded bytes.
PrintHexBytes(bytes)
End Sub
Public Shared Sub PrintHexBytes(bytes() As Byte)
If bytes Is Nothing OrElse bytes.Length = 0 Then
Console.WriteLine("<none>")
Else
Dim i As Integer
For i = 0 To bytes.Length - 1
Console.Write("{0:X2} ", bytes(i))
Next i
Console.WriteLine()
End If
End Sub
End Class
'This code produces the following output.
'
'System.Text.UTF7Encoding : 10 11 :2B 41 37 4C 59 2F 39 7A 2F 2D
'System.Text.UTF8Encoding : 6 12 :CE B2 F1 8F B3 BF
'System.Text.UTF8Encoding : 6 12 :EF BB BF CE B2 F1 8F B3 BF
'System.Text.UTF32Encoding : 8 12 :B2 03 00 00 FF FC 04 00
'System.Text.UTF32Encoding : 8 12 :FF FE 00 00 B2 03 00 00 FF FC 04 00
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.
Az átalakítandó adatok, például a streamből beolvasott adatok csak szekvenciális blokkokban érhetők el. Ebben az esetben, vagy ha az adatok mennyisége olyan nagy, hogy kisebb blokkokra kell osztani, az alkalmazás a Decoder metódus vagy Encoder a GetDecoder metódus által GetEncoder megadott vagy megadott adatokat használja.
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) történő preambulum beszúrása a fejlesztő feladata. A GetBytes metódus nem előszab előre egy preambulumot a kódolt bájtok sorozatának elejére.
Lásd még
A következőre érvényes:
GetBytes(String, Int32, Int32, Byte[], Int32)
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
- Forrás:
- UTF32Encoding.cs
A megadott String bájttömbbe kódol egy karakterkészletet.
public:
override int GetBytes(System::String ^ s, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes(string s, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : string * int * int * byte[] * int -> int
Public Overrides Function GetBytes (s As String, charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer
Paraméterek
- charIndex
- Int32
Az első kódolandó karakter indexe.
- charCount
- Int32
A kódolandó karakterek száma.
- bytes
- Byte[]
Az eredményként kapott bájtsorozatot tartalmazó bájttömb.
- byteIndex
- Int32
Az az index, amelynél elkezdi írni az eredményként kapott bájtsorozatot.
Válaszok
A beírt bytesbájtok tényleges száma.
Kivételek
charIndex vagy charCountbyteIndex kisebb, mint nulla.
-vagy-
charIndex és charCount ne jelölje az érvényes tartományt a következőben s: .
-vagy-
byteIndex érvénytelen index a következőben bytes: .
A hibaészlelés engedélyezve van, és s érvénytelen karaktersorozatot tartalmaz.
-vagy-
bytes nem rendelkezik elegendő kapacitással a tömb végétől byteIndex a kapott bájtok elhelyezéséhez.
Hiba történt (további információ:
-és-
EncoderFallback EncoderExceptionFallbackértékre van állítva.
Példák
Az alábbi példa meghatározza a sztring kódolásához szükséges bájtok számát, majd kódolja a sztringet, és megjeleníti az eredményül kapott bájtokat.
using System;
using System.Text;
public class SamplesUTF32Encoding {
public static void Main() {
// The characters to encode:
// Latin Small Letter Z (U+007A)
// Latin Small Letter A (U+0061)
// Combining Breve (U+0306)
// Latin Small Letter AE With Acute (U+01FD)
// Greek Small Letter Beta (U+03B2)
// a high-surrogate value (U+D8FF)
// a low-surrogate value (U+DCFF)
String myStr = "za\u0306\u01FD\u03B2\uD8FF\uDCFF";
// Create instances of different encodings.
UTF7Encoding u7 = new UTF7Encoding();
UTF8Encoding u8Nobom = new UTF8Encoding( false, true );
UTF8Encoding u8Bom = new UTF8Encoding( true, true );
UTF32Encoding u32Nobom = new UTF32Encoding( false, false, true );
UTF32Encoding u32Bom = new UTF32Encoding( false, true, true );
// Get the byte counts and the bytes.
PrintCountsAndBytes( myStr, u7 );
PrintCountsAndBytes( myStr, u8Nobom );
PrintCountsAndBytes( myStr, u8Bom );
PrintCountsAndBytes( myStr, u32Nobom );
PrintCountsAndBytes( myStr, u32Bom );
}
public static void PrintCountsAndBytes( String s, Encoding enc ) {
// Display the name of the encoding used.
Console.Write( "{0,-25} :", enc.ToString() );
// Display the exact byte count.
int iBC = enc.GetByteCount( s );
Console.Write( " {0,-3}", iBC );
// Display the maximum byte count.
int iMBC = enc.GetMaxByteCount( s.Length );
Console.Write( " {0,-3} :", iMBC );
// Get the byte order mark, if any.
byte[] preamble = enc.GetPreamble();
// Combine the preamble and the encoded bytes.
byte[] bytes = new byte[preamble.Length + iBC];
Array.Copy( preamble, bytes, preamble.Length );
enc.GetBytes( s, 0, s.Length, bytes, preamble.Length );
// Display all the encoded bytes.
PrintHexBytes( bytes );
}
public static void PrintHexBytes( byte[] bytes ) {
if (( bytes == null ) || ( bytes.Length == 0 ))
{
Console.WriteLine( "<none>" );
}
else {
for ( int i = 0; i < bytes.Length; i++ )
Console.Write( "{0:X2} ", bytes[i] );
Console.WriteLine();
}
}
}
/*
This code produces the following output.
System.Text.UTF7Encoding : 18 23 :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50 2F 63 2F 77 2D
System.Text.UTF8Encoding : 12 24 :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF
System.Text.UTF8Encoding : 12 24 :EF BB BF 7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF
System.Text.UTF32Encoding : 24 28 :7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00
System.Text.UTF32Encoding : 24 28 :FF FE 00 00 7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00
*/
Imports System.Text
Public Class SamplesUTF32Encoding
Public Shared Sub Main()
' The characters to encode:
' Latin Small Letter Z (U+007A)
' Latin Small Letter A (U+0061)
' Combining Breve (U+0306)
' Latin Small Letter AE With Acute (U+01FD)
' Greek Small Letter Beta (U+03B2)
' a high-surrogate value (U+D8FF)
' a low-surrogate value (U+DCFF)
Dim myStr As String = "za" & ChrW(&H0306) & ChrW(&H01FD) & ChrW(&H03B2) & ChrW(&HD8FF) & ChrW(&HDCFF)
' Create instances of different encodings.
Dim u7 As New UTF7Encoding()
Dim u8Nobom As New UTF8Encoding(False, True)
Dim u8Bom As New UTF8Encoding(True, True)
Dim u32Nobom As New UTF32Encoding(False, False, True)
Dim u32Bom As New UTF32Encoding(False, True, True)
' Get the byte counts and the bytes.
PrintCountsAndBytes(myStr, u7)
PrintCountsAndBytes(myStr, u8Nobom)
PrintCountsAndBytes(myStr, u8Bom)
PrintCountsAndBytes(myStr, u32Nobom)
PrintCountsAndBytes(myStr, u32Bom)
End Sub
Public Shared Sub PrintCountsAndBytes(s As String, enc As Encoding)
' Display the name of the encoding used.
Console.Write("{0,-25} :", enc.ToString())
' Display the exact byte count.
Dim iBC As Integer = enc.GetByteCount(s)
Console.Write(" {0,-3}", iBC)
' Display the maximum byte count.
Dim iMBC As Integer = enc.GetMaxByteCount(s.Length)
Console.Write(" {0,-3} :", iMBC)
' Get the byte order mark, if any.
Dim preamble As Byte() = enc.GetPreamble()
' Combine the preamble and the encoded bytes.
' NOTE: In Visual Basic, arrays contain one extra element by default.
' The following line creates an array with the exact number of elements required.
Dim bytes(preamble.Length + iBC - 1) As Byte
Array.Copy(preamble, bytes, preamble.Length)
enc.GetBytes(s, 0, s.Length, bytes, preamble.Length)
' Display all the encoded bytes.
PrintHexBytes(bytes)
End Sub
Public Shared Sub PrintHexBytes(bytes() As Byte)
If bytes Is Nothing OrElse bytes.Length = 0 Then
Console.WriteLine("<none>")
Else
Dim i As Integer
For i = 0 To bytes.Length - 1
Console.Write("{0:X2} ", bytes(i))
Next i
Console.WriteLine()
End If
End Sub
End Class
'This code produces the following output.
'
'System.Text.UTF7Encoding : 18 23 :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50 2F 63 2F 77 2D
'System.Text.UTF8Encoding : 12 24 :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF
'System.Text.UTF8Encoding : 12 24 :EF BB BF 7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF
'System.Text.UTF32Encoding : 24 28 :7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00
'System.Text.UTF32Encoding : 24 28 :FF FE 00 00 7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00
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.
Az átalakítandó adatok, például a streamből beolvasott adatok csak szekvenciális blokkokban érhetők el. Ebben az esetben, vagy ha az adatok mennyisége olyan nagy, hogy kisebb blokkokra kell osztani, az alkalmazás a Decoder metódus vagy Encoder a GetDecoder metódus által GetEncoder megadott vagy megadott adatokat használja.
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) történő preambulum beszúrása a fejlesztő feladata. A GetBytes metódus nem előszab előre egy preambulumot a kódolt bájtok sorozatának elejére.