ASCIIEncoding.GetBytes Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Kodar en uppsättning tecken i en sekvens med byte.
Överlagringar
| Name | Description |
|---|---|
| GetBytes(Char*, Int32, Byte*, Int32) |
Kodar en uppsättning tecken som börjar vid den angivna teckenpekaren till en sekvens med byte som lagras från och med den angivna bytepekaren. |
| GetBytes(Char[], Int32, Int32, Byte[], Int32) |
Kodar en uppsättning tecken från den angivna teckenmatrisen till den angivna bytematrisen. |
| GetBytes(String, Int32, Int32, Byte[], Int32) |
Kodar en uppsättning tecken från den angivna String i den angivna bytematrisen. |
GetBytes(Char*, Int32, Byte*, Int32)
Viktigt!
Detta API uppfyller inte CLS.
- Alternativ som uppfyller CLS
- System.Text.ASCIIEncoding.GetBytes(Char[], Int32, Int32, Byte[], Int32)
Kodar en uppsättning tecken som börjar vid den angivna teckenpekaren till en sekvens med byte som lagras från och med den angivna bytepekaren.
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)]
[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)]
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)>]
[<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
[<System.CLSCompliant(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
Parametrar
- chars
- Char*
En pekare till det första tecknet som ska kodas.
- charCount
- Int32
Antalet tecken som ska kodas.
- bytes
- Byte*
En pekare till den plats där du ska börja skriva den resulterande sekvensen med byte.
- byteCount
- Int32
Det maximala antalet byte som ska skrivas.
Returer
Det faktiska antalet byte som skrivits på den plats som anges av bytes.
- Attribut
Undantag
charCount eller byteCount är mindre än noll.
byteCount är mindre än det resulterande antalet byte.
En reserv inträffade (mer information finns i Character Encoding i .NET)
-och-
EncoderFallback är inställt på EncoderExceptionFallback.
Kommentarer
För att beräkna den exakta matrisstorlek som krävs för GetBytes att lagra de resulterande byteen använder GetByteCountprogrammet . För att beräkna den maximala matrisstorleken bör programmet använda GetMaxByteCount. Metoden GetByteCount tillåter vanligtvis allokering av mindre minne, medan GetMaxByteCount metoden vanligtvis körs snabbare.
Data som ska konverteras, till exempel data som läss från en dataström, kan endast vara tillgängliga i sekventiella block. I det här fallet, eller om mängden data är så stor att den måste delas upp i mindre block, bör programmet använda Decoder eller som Encoder tillhandahålls av GetDecoder metoden eller GetEncoder metoden.
ASCIIEncoding anger inte felidentifiering. Alla Unicode-tecken som är större än U+007F översätts till ett ASCII-frågetecken ("?").
Caution
Av säkerhetsskäl rekommenderar vi att programmet använder UTF8Encoding, UnicodeEncodingeller UTF32Encoding aktiverar felidentifiering.
Se även
Gäller för
GetBytes(Char[], Int32, Int32, Byte[], Int32)
Kodar en uppsättning tecken från den angivna teckenmatrisen till den angivna bytematrisen.
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
Parametrar
- chars
- Char[]
Teckenmatrisen som innehåller den uppsättning tecken som ska kodas.
- charIndex
- Int32
Indexet för det första tecknet som ska kodas.
- charCount
- Int32
Antalet tecken som ska kodas.
- bytes
- Byte[]
Bytematrisen som ska innehålla den resulterande sekvensen av byte.
- byteIndex
- Int32
Indexet där du ska börja skriva den resulterande sekvensen med byte.
Returer
Det faktiska antalet byte som skrivits till bytes.
Undantag
charIndex eller charCountbyteIndex är mindre än noll.
-eller-
charIndex och charCount ange inte ett giltigt intervall i chars.
-eller-
byteIndex är inte ett giltigt index i bytes.
bytes har inte tillräckligt med kapacitet från byteIndex till slutet av matrisen för att rymma de resulterande byteen.
En reserv inträffade (mer information finns i Character Encoding i .NET)
-och-
EncoderFallback är inställt på EncoderExceptionFallback.
Exempel
I följande exempel visas hur du använder GetBytes metoden för att koda ett intervall med tecken från en sträng och lagra de kodade tecknen i ett område med element i en bytematris.
using System;
using System.Text;
class ASCIIEncodingExample {
public static void Main() {
Byte[] bytes;
String chars = "ASCII Encoding Example";
ASCIIEncoding ascii = new ASCIIEncoding();
int byteCount = ascii.GetByteCount(chars.ToCharArray(), 6, 8);
bytes = new Byte[byteCount];
int bytesEncodedCount = ascii.GetBytes(chars, 6, 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 ASCIIEncodingExample
Public Shared Sub Main()
Dim bytes() As Byte
Dim chars As String = "ASCII Encoding Example"
Dim ascii As New ASCIIEncoding()
Dim byteCount As Integer = ascii.GetByteCount(chars.ToCharArray(), 6, 8)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = ascii.GetBytes(chars, 6, 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
Kommentarer
För att beräkna den exakta matrisstorlek som krävs för GetBytes att lagra de resulterande byteen använder GetByteCountprogrammet . För att beräkna den maximala matrisstorleken bör programmet använda GetMaxByteCount. Metoden GetByteCount tillåter vanligtvis allokering av mindre minne, medan GetMaxByteCount metoden vanligtvis körs snabbare.
Data som ska konverteras, till exempel data som läss från en dataström, kan endast vara tillgängliga i sekventiella block. I det här fallet, eller om mängden data är så stor att den måste delas upp i mindre block, bör programmet använda Decoder eller som Encoder tillhandahålls av GetDecoder metoden eller GetEncoder metoden.
ASCIIEncoding anger inte felidentifiering. Alla Unicode-tecken som är större än U+007F kodas som ASCII-frågetecknet ("?").
Caution
Av säkerhetsskäl rekommenderar vi att programmet använder UTF8Encoding, UnicodeEncodingeller UTF32Encoding aktiverar felidentifiering.
Se även
Gäller för
GetBytes(String, Int32, Int32, Byte[], Int32)
Kodar en uppsättning tecken från den angivna String i den angivna bytematrisen.
public:
override int GetBytes(System::String ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes(string chars, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : string * int * int * byte[] * int -> int
Public Overrides Function GetBytes (chars As String, charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer
Parametrar
- chars
- String
Den uppsättning tecken som ska kodas.
- charIndex
- Int32
Indexet för det första tecknet som ska kodas.
- charCount
- Int32
Antalet tecken som ska kodas.
- bytes
- Byte[]
Bytematrisen som ska innehålla den resulterande sekvensen av byte.
- byteIndex
- Int32
Indexet där du ska börja skriva den resulterande sekvensen med byte.
Returer
Det faktiska antalet byte som skrivits till bytes.
Undantag
chars eller bytes är null.
charIndex eller charCountbyteIndex är mindre än noll.
-eller-
charIndex och charCount ange inte ett giltigt intervall i chars.
-eller-
byteIndex är inte ett giltigt index i bytes.
bytes har inte tillräckligt med kapacitet från byteIndex till slutet av matrisen för att rymma de resulterande byteen.
En reserv inträffade (mer information finns i Character Encoding i .NET)
-och-
EncoderFallback är inställt på EncoderExceptionFallback.
Exempel
I följande exempel visas hur du använder GetBytes metoden för att koda ett område med element från en Unicode-teckenmatris och lagra de kodade byteen i ett område med element i en bytematris.
using System;
using System.Text;
class ASCIIEncodingExample {
public static void Main() {
Byte[] bytes;
// Unicode characters.
Char[] chars = new Char[] {
'\u0023', // #
'\u0025', // %
'\u03a0', // Pi
'\u03a3' // Sigma
};
ASCIIEncoding ascii = new ASCIIEncoding();
int byteCount = ascii.GetByteCount(chars, 1, 2);
bytes = new Byte[byteCount];
int bytesEncodedCount = ascii.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 ASCIIEncodingExample
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 ascii As New ASCIIEncoding()
Dim byteCount As Integer = ascii.GetByteCount(chars, 1, 2)
bytes = New Byte(byteCount - 1){}
Dim bytesEncodedCount As Integer = ascii.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
Kommentarer
För att beräkna den exakta matrisstorlek som krävs för GetBytes att lagra de resulterande byteen använder GetByteCountprogrammet . För att beräkna den maximala matrisstorleken bör programmet använda GetMaxByteCount. Metoden GetByteCount tillåter vanligtvis allokering av mindre minne, medan GetMaxByteCount metoden vanligtvis körs snabbare.
Data som ska konverteras, till exempel data som läss från en dataström, kan endast vara tillgängliga i sekventiella block. I det här fallet, eller om mängden data är så stor att den måste delas upp i mindre block, bör programmet använda Decoder eller som Encoder tillhandahålls av GetDecoder metoden eller GetEncoder metoden.
ASCIIEncoding anger inte felidentifiering. Alla Unicode-tecken som är större än U+007F kodas som ASCII-frågetecknet ("?").
Caution
Av säkerhetsskäl rekommenderar vi att du använder UTF8Encoding, UnicodeEncodingeller UTF32Encoding och aktiverar felidentifiering.