Encoder.GetBytes 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파생 클래스에서 재정의되는 경우 문자 집합을 바이트 시퀀스로 인코딩합니다.
오버로드
| Name | Description |
|---|---|
| GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean) |
파생 클래스에서 재정의되는 경우 입력 문자 범위의 문자 집합과 내부 버퍼의 모든 문자를 입력 바이트 범위에 저장된 바이트 시퀀스로 인코딩합니다. 매개 변수는 변환 후 인코더의 내부 상태를 지울지 여부를 나타냅니다. |
| GetBytes(Char*, Int32, Byte*, Int32, Boolean) |
파생 클래스에서 재정의되는 경우 지정된 문자 포인터에서 시작하는 문자 집합과 내부 버퍼의 모든 문자를 지정된 바이트 포인터에서 시작하여 저장되는 바이트 시퀀스로 인코딩합니다. 매개 변수는 변환 후 인코더의 내부 상태를 지울지 여부를 나타냅니다. |
| GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean) |
파생 클래스에서 재정의되는 경우 지정된 문자 배열의 문자 집합과 내부 버퍼의 모든 문자를 지정된 바이트 배열로 인코딩합니다. 매개 변수는 변환 후 인코더의 내부 상태를 지울지 여부를 나타냅니다. |
설명
개체는 Encoder 호출 사이에 GetBytes상태를 저장합니다. 애플리케이션이 데이터 스트림으로 완료되면 마지막 호출에서 매개 변수를 true 설정 flush 하여 GetBytes 상태 정보가 플러시되고 인코딩된 바이트가 제대로 종료되는지 확인해야 합니다. 이 설정을 사용하면 인코더는 일치하지 않는 서로게이트 또는 불완전한 결합 시퀀스와 같은 데이터 블록 끝에 있는 잘못된 바이트를 무시하고 내부 버퍼를 지웁니다.
결과 문자를 저장해야 하는 GetBytes 정확한 버퍼 크기를 계산하려면 애플리케이션에서 사용해야 GetByteCount합니다.
set를 사용하여 false호출 flush 되는 경우 GetBytes 인코더는 내부 버퍼의 데이터 블록 끝에 후행 바이트를 저장하고 다음 인코딩 작업에서 사용합니다. 애플리케이션은 이전 블록의 후행 문자가 계산에 포함되도록 동일한 블록을 호출하기 직전에 데이터 블록을 호출 GetByteCountGetBytes 해야 합니다.
애플리케이션이 입력 스트림의 여러 세그먼트를 변환하는 경우 메서드를 사용하는 것이 Convert 좋습니다. GetBytes 는 출력 버퍼가 충분히 크지 않은 경우 예외를 throw하지만 Convert 가능한 한 많은 공간을 채우고 읽은 문자와 쓴 바이트를 반환합니다. 또한 더 많은 의견에 대한 항목을 참조 Encoding.GetBytes 하세요.
GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean)
파생 클래스에서 재정의되는 경우 입력 문자 범위의 문자 집합과 내부 버퍼의 모든 문자를 입력 바이트 범위에 저장된 바이트 시퀀스로 인코딩합니다. 매개 변수는 변환 후 인코더의 내부 상태를 지울지 여부를 나타냅니다.
public:
virtual int GetBytes(ReadOnlySpan<char> chars, Span<System::Byte> bytes, bool flush);
public virtual int GetBytes(ReadOnlySpan<char> chars, Span<byte> bytes, bool flush);
abstract member GetBytes : ReadOnlySpan<char> * Span<byte> * bool -> int
override this.GetBytes : ReadOnlySpan<char> * Span<byte> * bool -> int
Public Overridable Function GetBytes (chars As ReadOnlySpan(Of Char), bytes As Span(Of Byte), flush As Boolean) As Integer
매개 변수
- chars
- ReadOnlySpan<Char>
인코딩할 문자 범위입니다.
- flush
- Boolean
true변환 후 인코더의 내부 상태를 지우려면 그렇지 않으면 . false
반품
매개 변수가 나타내는 위치에 기록된 실제 바이트 수 bytes 입니다.
적용 대상
GetBytes(Char*, Int32, Byte*, Int32, Boolean)
Important
이 API는 CLS 규격이 아닙니다.
파생 클래스에서 재정의되는 경우 지정된 문자 포인터에서 시작하는 문자 집합과 내부 버퍼의 모든 문자를 지정된 바이트 포인터에서 시작하여 저장되는 바이트 시퀀스로 인코딩합니다. 매개 변수는 변환 후 인코더의 내부 상태를 지울지 여부를 나타냅니다.
public:
virtual int GetBytes(char* chars, int charCount, System::Byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
public virtual int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
[<System.CLSCompliant(false)>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
매개 변수
- chars
- Char*
인코딩할 첫 번째 문자에 대한 포인터입니다.
- charCount
- Int32
인코딩할 문자 수입니다.
- bytes
- Byte*
결과 바이트 시퀀스 쓰기를 시작할 위치에 대한 포인터입니다.
- byteCount
- Int32
쓸 최대 바이트 수입니다.
- flush
- Boolean
true변환 후 인코더의 내부 상태를 지우려면 그렇지 않으면 . false
반품
매개 변수가 나타내는 위치에 기록된 실제 바이트 수 bytes 입니다.
- 특성
예외
charCount 또는 byteCount 0보다 작습니다.
byteCount 는 결과 바이트 수보다 작습니다.
적용 대상
GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean)
파생 클래스에서 재정의되는 경우 지정된 문자 배열의 문자 집합과 내부 버퍼의 모든 문자를 지정된 바이트 배열로 인코딩합니다. 매개 변수는 변환 후 인코더의 내부 상태를 지울지 여부를 나타냅니다.
public:
abstract int GetBytes(cli::array <char> ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex, bool flush);
public abstract int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex, bool flush);
abstract member GetBytes : char[] * int * int * byte[] * int * bool -> int
Public MustOverride Function GetBytes (chars As Char(), charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer, flush As Boolean) As Integer
매개 변수
- chars
- Char[]
인코딩할 문자 집합이 포함된 문자 배열입니다.
- charIndex
- Int32
인코딩할 첫 번째 문자의 인덱스입니다.
- charCount
- Int32
인코딩할 문자 수입니다.
- bytes
- Byte[]
결과 바이트 시퀀스를 포함할 바이트 배열입니다.
- byteIndex
- Int32
결과 바이트 시퀀스 작성을 시작할 인덱스입니다.
- flush
- Boolean
true변환 후 인코더의 내부 상태를 지우려면 그렇지 않으면 . false
반품
에 기록된 실제 바이트 수입니다 bytes.
예외
charIndex 또는 charCountbyteIndex 0보다 작습니다.
-또는-
charIndex 에서 charCount 유효한 범위를 chars나타내지 않습니다.
-또는-
byteIndex에서 유효한 인덱스가 아닌 경우 bytes
bytes 에는 결과 바이트를 수용할 수 있는 충분한 용량 byteIndex 이 없습니다.
예제
다음 예제에서는 문자 배열의 요소 범위를 인코딩하고 인코딩된 바이트를 바이트 배열의 요소 범위에 저장하는 방법을 보여 줍니다. 메서드 GetByteCount 는 필요한 배열 GetBytes의 크기를 확인 하는 데 사용 됩니다.
using System;
using System.Text;
class EncoderExample {
public static void Main() {
Byte[] bytes;
// Unicode characters.
Char[] chars = new Char[] {
'\u0023', // #
'\u0025', // %
'\u03a0', // Pi
'\u03a3' // Sigma
};
Encoder uniEncoder = Encoding.Unicode.GetEncoder();
int byteCount = uniEncoder.GetByteCount(chars, 0, chars.Length, true);
bytes = new Byte[byteCount];
int bytesEncodedCount = uniEncoder.GetBytes(chars, 0, chars.Length, bytes, 0, true);
Console.WriteLine(
"{0} bytes used to encode characters.", bytesEncodedCount
);
Console.Write("Encoded bytes: ");
foreach (Byte b in bytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
}
}
/* This code example produces the following output.
8 bytes used to encode characters.
Encoded bytes: [35][0][37][0][160][3][163][3]
*/
Imports System.Text
Imports Microsoft.VisualBasic.Strings
Class EncoderExample
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 uniEncoder As Encoder = Encoding.Unicode.GetEncoder()
Dim byteCount As Integer = _
uniEncoder.GetByteCount(chars, 0, chars.Length, True)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = _
uniEncoder.GetBytes(chars, 0, chars.Length, bytes, 0, True)
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
'This code example produces the following output.
'8 bytes used to encode characters.
'Encoded bytes: [35][0][37][0][160][3][163][3]
'