UnicodeEncoding.GetBytes Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Codifica un set di caratteri in una sequenza di byte.
Overload
GetBytes(Char[], Int32, Int32, Byte[], Int32) |
Codifica un set di caratteri dalla matrice di caratteri specificata nella matrice di byte specificata. |
GetBytes(String, Int32, Int32, Byte[], Int32) |
Codifica un set di caratteri dall'oggetto String specificato nella matrice di byte specificata. |
GetBytes(String) |
Codifica un set di caratteri dalla stringa specificata nella matrice di byte specificata. |
GetBytes(Char*, Int32, Byte*, Int32) |
Codifica un set di caratteri a partire dal puntatore ai caratteri specificato in una sequenza di byte archiviati a partire dal puntatore ai byte specificato. |
GetBytes(Char[], Int32, Int32, Byte[], Int32)
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.cs
Codifica un set di caratteri dalla matrice di caratteri specificata nella matrice di byte specificata.
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
Parametri
- chars
- Char[]
Matrice di caratteri contenente il set di caratteri da codificare.
- charIndex
- Int32
Indice del primo carattere da codificare.
- charCount
- Int32
Numero di caratteri da codificare.
- bytes
- Byte[]
Matrice di byte che deve contenere la sequenza di byte risultante.
- byteIndex
- Int32
Indice in corrispondenza del quale iniziare a scrivere la sequenza di byte risultante.
Restituisce
Numero effettivo di byte scritti in bytes
.
Eccezioni
charIndex
o charCount
o byteIndex
è minore di zero.
-oppure-
charIndex
e charCount
non identificano un intervallo valido in chars
.
-oppure-
byteIndex
non è un indice valido in bytes
.
Il rilevamento errori è abilitato e chars
contiene una sequenza di carattere non valida.
-oppure-
bytes
non dispone di sufficiente capacità da byteIndex
alla fine della matrice per contenere i byte risultanti.
Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)
-e-
EncoderFallback è impostato su EncoderExceptionFallback.
Esempio
Nell'esempio seguente viene illustrato come utilizzare il GetBytes metodo per codificare un intervallo di caratteri da un String oggetto e archiviare i byte codificati in un intervallo di elementi in una matrice di byte.
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
array<Byte>^bytes;
String^ chars = "Unicode Encoding Example";
UnicodeEncoding^ Unicode = gcnew UnicodeEncoding;
int byteCount = Unicode->GetByteCount( chars->ToCharArray(), 8, 8 );
bytes = gcnew array<Byte>(byteCount);
int bytesEncodedCount = Unicode->GetBytes( chars, 8, 8, bytes, 0 );
Console::WriteLine( "{0} bytes used to encode string.", bytesEncodedCount );
Console::Write( "Encoded bytes: " );
IEnumerator^ myEnum = bytes->GetEnumerator();
while ( myEnum->MoveNext() )
{
Byte b = safe_cast<Byte>(myEnum->Current);
Console::Write( "[{0}]", b );
}
Console::WriteLine();
}
using System;
using System.Text;
class UnicodeEncodingExample {
public static void Main() {
Byte[] bytes;
String chars = "Unicode Encoding Example";
UnicodeEncoding Unicode = new UnicodeEncoding();
int byteCount = Unicode.GetByteCount(chars.ToCharArray(), 8, 8);
bytes = new Byte[byteCount];
int bytesEncodedCount = Unicode.GetBytes(chars, 8, 8, bytes, 0);
Console.WriteLine(
"{0} bytes used to encode string.", bytesEncodedCount
);
Console.Write("Encoded bytes: ");
foreach (Byte b in bytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
}
}
Imports System.Text
Class UnicodeEncodingExample
Public Shared Sub Main()
Dim bytes() As Byte
Dim chars As String = "Unicode Encoding Example"
Dim uni As New UnicodeEncoding()
Dim byteCount As Integer = uni.GetByteCount(chars.ToCharArray(), 8, 8)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = uni.GetBytes(chars, 8, 8, bytes, 0)
Console.WriteLine("{0} bytes used to encode string.", bytesEncodedCount)
Console.Write("Encoded bytes: ")
Dim b As Byte
For Each b In bytes
Console.Write("[{0}]", b)
Next b
Console.WriteLine()
End Sub
End Class
Commenti
Per calcolare la dimensione esatta della matrice richiesta da GetBytes per archiviare i byte risultanti, chiamare il GetByteCount metodo . Per calcolare le dimensioni massime della matrice, chiamare il GetMaxByteCount metodo . Il GetByteCount metodo in genere alloca meno memoria, mentre il GetMaxByteCount metodo viene in genere eseguito più velocemente.
Con il rilevamento degli errori, una sequenza non valida fa sì che questo metodo generi un'eccezione ArgumentException. Senza il rilevamento degli errori, le sequenze non valide vengono ignorate e non viene generata alcuna eccezione.
I dati da convertire, ad esempio i dati letti da un flusso, potrebbero essere disponibili solo in blocchi sequenziali. In questo caso, o se la quantità di dati è così grande che deve essere divisa in blocchi più piccoli, l'applicazione deve usare rispettivamente l'oggetto Decoder o Encoder fornito dal GetDecoder metodo o dal GetEncoder metodo .
Importante
Per assicurarsi che i byte codificati vengano decodificati correttamente quando vengono salvati come file o come flusso, è possibile anteporre un flusso di byte codificati con un preambolo. L'inserimento del preambolo all'inizio di un flusso di byte (ad esempio all'inizio di una serie di byte da scrivere in un file) è responsabilità dello sviluppatore. Il GetBytes metodo non antepone un preambolo all'inizio di una sequenza di byte codificati.
Vedi anche
Si applica a
GetBytes(String, Int32, Int32, Byte[], Int32)
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.cs
Codifica un set di caratteri dall'oggetto String specificato nella matrice di byte specificata.
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
Parametri
- s
- String
Stringa contenente il set di caratteri da codificare.
- charIndex
- Int32
Indice del primo carattere da codificare.
- charCount
- Int32
Numero di caratteri da codificare.
- bytes
- Byte[]
Matrice di byte che deve contenere la sequenza di byte risultante.
- byteIndex
- Int32
Indice in corrispondenza del quale iniziare a scrivere la sequenza di byte risultante.
Restituisce
Numero effettivo di byte scritti in bytes
.
Eccezioni
charIndex
o charCount
o byteIndex
è minore di zero.
-oppure-
charIndex
e charCount
non identificano un intervallo valido in chars
.
-oppure-
byteIndex
non è un indice valido in bytes
.
Il rilevamento errori è abilitato e s
contiene una sequenza di carattere non valida.
-oppure-
bytes
non dispone di sufficiente capacità da byteIndex
alla fine della matrice per contenere i byte risultanti.
Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)
-e-
EncoderFallback è impostato su EncoderExceptionFallback.
Esempio
Nell'esempio seguente viene illustrato come codificare un intervallo di elementi da una matrice di caratteri Unicode e archiviare i byte codificati in un intervallo di elementi in una matrice di byte.
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
array<Byte>^bytes;
// Unicode characters.
// Pi
// Sigma
array<Char>^chars = {L'\u03a0',L'\u03a3',L'\u03a6',L'\u03a9'};
UnicodeEncoding^ Unicode = gcnew UnicodeEncoding;
int byteCount = Unicode->GetByteCount( chars, 1, 2 );
bytes = gcnew array<Byte>(byteCount);
int bytesEncodedCount = Unicode->GetBytes( chars, 1, 2, bytes, 0 );
Console::WriteLine( "{0} bytes used to encode characters.", bytesEncodedCount );
Console::Write( "Encoded bytes: " );
IEnumerator^ myEnum = bytes->GetEnumerator();
while ( myEnum->MoveNext() )
{
Byte b = safe_cast<Byte>(myEnum->Current);
Console::Write( "[{0}]", b );
}
Console::WriteLine();
}
using System;
using System.Text;
class UnicodeEncodingExample {
public static void Main() {
Byte[] bytes;
// Unicode characters.
Char[] chars = new Char[] {
'\u0023', // #
'\u0025', // %
'\u03a0', // Pi
'\u03a3' // Sigma
};
UnicodeEncoding Unicode = new UnicodeEncoding();
int byteCount = Unicode.GetByteCount(chars, 1, 2);
bytes = new Byte[byteCount];
int bytesEncodedCount = Unicode.GetBytes(chars, 1, 2, bytes, 0);
Console.WriteLine(
"{0} bytes used to encode characters.", bytesEncodedCount
);
Console.Write("Encoded bytes: ");
foreach (Byte b in bytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
}
}
Imports System.Text
Imports Microsoft.VisualBasic.Strings
Class UnicodeEncodingExample
Public Shared Sub Main()
Dim bytes() As Byte
' Unicode characters.
' ChrW(35) = #
' ChrW(37) = %
' ChrW(928) = Pi
' ChrW(931) = Sigma
Dim chars() As Char = {ChrW(35), ChrW(37), ChrW(928), ChrW(931)}
Dim uni As New UnicodeEncoding()
Dim byteCount As Integer = uni.GetByteCount(chars, 1, 2)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = uni.GetBytes(chars, 1, 2, bytes, 0)
Console.WriteLine("{0} bytes used to encode characters.", bytesEncodedCount)
Console.Write("Encoded bytes: ")
Dim b As Byte
For Each b In bytes
Console.Write("[{0}]", b)
Next b
Console.WriteLine()
End Sub
End Class
Commenti
Per calcolare la dimensione esatta della matrice richiesta da GetBytes per archiviare i byte risultanti, chiamare il GetByteCount metodo . Per calcolare le dimensioni massime della matrice, chiamare il GetMaxByteCount metodo . Il GetByteCount metodo in genere alloca meno memoria, mentre il GetMaxByteCount metodo viene in genere eseguito più velocemente.
Con il rilevamento degli errori, una sequenza non valida fa sì che questo metodo generi un'eccezione ArgumentException. Senza il rilevamento degli errori, le sequenze non valide vengono ignorate e non viene generata alcuna eccezione.
I dati da convertire, ad esempio i dati letti da un flusso, potrebbero essere disponibili solo in blocchi sequenziali. In questo caso, o se la quantità di dati è così grande che deve essere divisa in blocchi più piccoli, l'applicazione deve usare rispettivamente l'oggetto Decoder o Encoder fornito dal GetDecoder metodo o dal GetEncoder metodo .
Importante
Per assicurarsi che i byte codificati vengano decodificati correttamente quando vengono salvati come file o come flusso, è possibile anteporre un flusso di byte codificati con un preambolo. L'inserimento del preambolo all'inizio di un flusso di byte (ad esempio all'inizio di una serie di byte da scrivere in un file) è responsabilità dello sviluppatore. Il GetBytes metodo non antepone un preambolo all'inizio di una sequenza di byte codificati.
Vedi anche
Si applica a
GetBytes(String)
Codifica un set di caratteri dalla stringa specificata nella matrice di byte specificata.
public:
override cli::array <System::Byte> ^ GetBytes(System::String ^ s);
public override byte[] GetBytes (string s);
override this.GetBytes : string -> byte[]
Public Overrides Function GetBytes (s As String) As Byte()
Parametri
- s
- String
Restituisce
Si applica a
GetBytes(Char*, Int32, Byte*, Int32)
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.cs
- Origine:
- UnicodeEncoding.cs
Importante
Questa API non è conforme a CLS.
Codifica un set di caratteri a partire dal puntatore ai caratteri specificato in una sequenza di byte archiviati a partire dal puntatore ai byte specificato.
public:
override int GetBytes(char* chars, int charCount, System::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]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[<System.CLSCompliant(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
Parametri
- chars
- Char*
Puntatore al primo carattere da codificare.
- charCount
- Int32
Numero di caratteri da codificare.
- bytes
- Byte*
Puntatore alla posizione in cui iniziare a scrivere la sequenza di byte risultante.
- byteCount
- Int32
Numero massimo di byte da scrivere.
Restituisce
Numero effettivo di byte scritti nella posizione indicata dal parametro bytes
.
- Attributi
Eccezioni
charCount
o byteCount
è minore di zero.
Il rilevamento errori è abilitato e chars
contiene una sequenza di carattere non valida.
-oppure-
byteCount
è minore del numero di byte risultante.
Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)
-e-
EncoderFallback è impostato su EncoderExceptionFallback.
Commenti
Per calcolare la dimensione esatta della matrice che GetBytes richiede di archiviare i byte risultanti, chiamare il GetByteCount metodo . Per calcolare le dimensioni massime della matrice, chiamare il GetMaxByteCount metodo . Il GetByteCount metodo in genere alloca meno memoria, mentre il GetMaxByteCount metodo viene in genere eseguito più velocemente.
Con il rilevamento degli errori, una sequenza non valida fa sì che questo metodo generi un'eccezione ArgumentException. Senza il rilevamento degli errori, le sequenze non valide vengono ignorate e non viene generata alcuna eccezione.
I dati da convertire, ad esempio i dati letti da un flusso, potrebbero essere disponibili solo in blocchi sequenziali. In questo caso, o se la quantità di dati è così grande che deve essere divisa in blocchi più piccoli, l'applicazione deve usare rispettivamente l'oggetto Decoder o Encoder fornito dal GetDecoder metodo o GetEncoder .
Importante
Per assicurarsi che i byte codificati vengano decodificati correttamente quando vengono salvati come file o come flusso, è possibile anteporre un flusso di byte codificati con un preambolo. L'inserimento del preambolo all'inizio di un flusso di byte (ad esempio all'inizio di una serie di byte da scrivere in un file) è responsabilità dello sviluppatore. Il GetBytes metodo non antepone un preambolo all'inizio di una sequenza di byte codificati.