UTF8Encoding.GetBytes 메서드

정의

문자 집합을 바이트 시퀀스로 인코딩합니다.

오버로드

Name Description
GetBytes(Char[], Int32, Int32, Byte[], Int32)

지정된 문자 배열의 문자 집합을 지정된 바이트 배열로 인코딩합니다.

GetBytes(String, Int32, Int32, Byte[], Int32)

지정된 문자 집합을 지정된 String 바이트 배열로 인코딩합니다.

GetBytes(String)

지정된 String 개체의 문자를 바이트 시퀀스로 인코딩합니다.

GetBytes(Char*, Int32, Byte*, Int32)

지정된 문자 포인터에서 시작하는 문자 집합을 지정된 바이트 포인터에서 시작하여 저장되는 바이트 시퀀스로 인코딩합니다.

GetBytes(Char[], Int32, Int32, Byte[], Int32)

지정된 문자 배열의 문자 집합을 지정된 바이트 배열로 인코딩합니다.

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

매개 변수

chars
Char[]

인코딩할 문자 집합이 포함된 문자 배열입니다.

charIndex
Int32

인코딩할 첫 번째 문자의 인덱스입니다.

charCount
Int32

인코딩할 문자 수입니다.

bytes
Byte[]

결과 바이트 시퀀스를 포함할 바이트 배열입니다.

byteIndex
Int32

결과 바이트 시퀀스 작성을 시작할 인덱스입니다.

반품

에 기록된 실제 바이트 수입니다 bytes.

예외

charsnull입니다.

-또는-

bytesnull입니다.

charIndex 또는 charCountbyteIndex 0보다 작습니다.

-또는-

charIndex 에서 charCount 유효한 범위를 chars나타내지 않습니다.

-또는-

byteIndex에서 유효한 인덱스가 아닌 경우 bytes

오류 검색을 사용하도록 설정되었으며 chars 잘못된 문자 시퀀스를 포함합니다.

-또는-

bytes 에는 결과 바이트를 수용할 수 있는 충분한 용량 byteIndex 이 없습니다.

대체가 발생했습니다(자세한 내용은 .NET의 문자 인코딩 참조).

-그리고-

EncoderFallbackEncoderExceptionFallback로 설정됩니다.

예제

다음 예제에서는 메서드를 사용하여 GetBytes 문자열의 문자 범위를 인코딩하고 인코딩된 바이트를 바이트 배열의 요소 범위에 저장합니다.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        Byte[] bytes;
        String chars = "UTF8 Encoding Example";
        
        UTF8Encoding utf8 = new UTF8Encoding();
        
        int byteCount = utf8.GetByteCount(chars.ToCharArray(), 0, 13);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf8.GetBytes(chars, 0, 13, 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 UTF8EncodingExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte
        Dim chars As String = "UTF8 Encoding Example"
        
        Dim utf8 As New UTF8Encoding()
        
        Dim byteCount As Integer = utf8.GetByteCount(chars.ToCharArray(), 0, 13)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = utf8.GetBytes(chars, 0, 13, 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

설명

결과 바이트를 저장하는 데 필요한 GetBytes 정확한 배열 크기를 계산하려면 메서드를 GetByteCount 호출합니다. 최대 배열 크기를 계산하려면 메서드를 호출합니다 GetMaxByteCount . 메서드는 GetByteCount 일반적으로 더 적은 메모리를 할당하지만 메서드는 GetMaxByteCount 일반적으로 더 빠르게 실행됩니다.

오류 검색 시퀀스가 잘못되면 이 메서드가 예외를 throw합니다 ArgumentException . 오류 검색이 없으면 잘못된 시퀀스가 무시되고 예외가 throw되지 않습니다.

스트림에서 읽은 데이터와 같이 변환할 데이터는 순차적 블록에서만 사용할 수 있습니다. 이 경우 또는 데이터의 양이 너무 커서 더 작은 블록으로 나누어야 하는 경우 메서드 또는 메서드에서 제공된 GetDecoder 값을 각각 사용합니다Decoder.GetEncoderEncoder

인코딩된 바이트가 파일 또는 스트림으로 저장될 때 제대로 디코딩되도록 하려면 인코딩된 바이트 스트림의 접두사를 프리앰블으로 접두사로 지정할 수 있습니다. 바이트 스트림의 시작 부분에 프리앰블을 삽입하는 것은 개발자의 책임입니다(예: 파일에 쓸 일련의 바이트 시작 부분). 메서드는 GetBytes 인코딩된 바이트 시퀀스의 시작 부분에 접두사를 추가하지 않습니다.

추가 정보

적용 대상

GetBytes(String, Int32, Int32, Byte[], Int32)

지정된 문자 집합을 지정된 String 바이트 배열로 인코딩합니다.

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

매개 변수

s
String

String 인코딩할 문자 집합이 포함된 항목입니다.

charIndex
Int32

인코딩할 첫 번째 문자의 인덱스입니다.

charCount
Int32

인코딩할 문자 수입니다.

bytes
Byte[]

결과 바이트 시퀀스를 포함할 바이트 배열입니다.

byteIndex
Int32

결과 바이트 시퀀스 작성을 시작할 인덱스입니다.

반품

에 기록된 실제 바이트 수입니다 bytes.

예외

snull입니다.

-또는-

bytesnull입니다.

charIndex 또는 charCountbyteIndex 0보다 작습니다.

-또는-

charIndex 에서 charCount 유효한 범위를 s나타내지 않습니다.

-또는-

byteIndex에서 유효한 인덱스가 아닌 경우 bytes

오류 검색을 사용하도록 설정되었으며 s 잘못된 문자 시퀀스를 포함합니다.

-또는-

bytes 에는 결과 바이트를 수용할 수 있는 충분한 용량 byteIndex 이 없습니다.

대체가 발생했습니다(자세한 내용은 .NET의 문자 인코딩 참조).

-그리고-

EncoderFallbackEncoderExceptionFallback로 설정됩니다.

예제

다음 예제에서는 메서드를 사용하여 GetBytes 유니코드 문자 배열의 요소 범위를 인코딩하고 인코딩된 바이트를 바이트 배열의 요소 범위에 저장합니다.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        UTF8Encoding utf8 = new UTF8Encoding();
        
        int byteCount = utf8.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf8.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 UTF8EncodingExample
    
    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 utf8 As New UTF8Encoding()
        
        Dim byteCount As Integer = utf8.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = utf8.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

설명

결과 바이트를 저장하는 데 필요한 GetBytes 정확한 배열 크기를 계산하려면 메서드를 GetByteCount 호출합니다. 최대 배열 크기를 계산하려면 메서드를 호출합니다 GetMaxByteCount . 메서드는 GetByteCount 일반적으로 더 적은 메모리를 할당하지만 메서드는 GetMaxByteCount 일반적으로 더 빠르게 실행됩니다.

오류 검색 시퀀스가 잘못되면 이 메서드가 예외를 throw합니다 ArgumentException . 오류 검색이 없으면 잘못된 시퀀스가 무시되고 예외가 throw되지 않습니다.

스트림에서 읽은 데이터와 같이 변환할 데이터는 순차적 블록에서만 사용할 수 있습니다. 이 경우 또는 데이터의 양이 너무 커서 더 작은 블록으로 나누어야 하는 경우 메서드 또는 메서드에서 제공된 GetDecoder 값을 각각 사용합니다Decoder.GetEncoderEncoder

인코딩된 바이트가 파일 또는 스트림으로 저장될 때 제대로 디코딩되도록 하려면 인코딩된 바이트 스트림의 접두사를 프리앰블으로 접두사로 지정할 수 있습니다. 바이트 스트림의 시작 부분에 프리앰블을 삽입하는 것은 개발자의 책임입니다(예: 파일에 쓸 일련의 바이트 시작 부분). 메서드는 GetBytes 인코딩된 바이트 시퀀스의 시작 부분에 접두사를 추가하지 않습니다.

추가 정보

적용 대상

GetBytes(String)

지정된 String 개체의 문자를 바이트 시퀀스로 인코딩합니다.

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()

매개 변수

s
String

인코딩할 문자열입니다.

반품

Byte[]

s 매개 변수로 지정된 문자열에 인코딩된 문자를 포함하는 바이트 배열입니다.

적용 대상

GetBytes(Char*, Int32, Byte*, Int32)

Important

이 API는 CLS 규격이 아닙니다.

지정된 문자 포인터에서 시작하는 문자 집합을 지정된 바이트 포인터에서 시작하여 저장되는 바이트 시퀀스로 인코딩합니다.

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

매개 변수

chars
Char*

인코딩할 첫 번째 문자에 대한 포인터입니다.

charCount
Int32

인코딩할 문자 수입니다.

bytes
Byte*

결과 바이트 시퀀스 쓰기를 시작할 위치에 대한 포인터입니다.

byteCount
Int32

쓸 최대 바이트 수입니다.

반품

로 표시된 위치에 기록된 bytes실제 바이트 수입니다.

특성

예외

charsnull입니다.

-또는-

bytesnull입니다.

charCount 또는 byteCount 0보다 작습니다.

오류 검색을 사용하도록 설정되었으며 chars 잘못된 문자 시퀀스를 포함합니다.

-또는-

byteCount 는 결과 바이트 수보다 작습니다.

대체가 발생했습니다(자세한 내용은 .NET의 문자 인코딩 참조).

-그리고-

EncoderFallbackEncoderExceptionFallback로 설정됩니다.

설명

결과 바이트를 저장하는 데 필요한 GetBytes 정확한 배열 크기를 계산하려면 메서드를 GetByteCount 호출합니다. 최대 배열 크기를 계산하려면 메서드를 호출합니다 GetMaxByteCount . 메서드는 GetByteCount 일반적으로 더 적은 메모리를 할당하지만 메서드는 GetMaxByteCount 일반적으로 더 빠르게 실행됩니다.

오류 검색 시퀀스가 잘못되면 이 메서드가 예외를 throw합니다 ArgumentException . 오류 검색이 없으면 잘못된 시퀀스가 무시되고 예외가 throw되지 않습니다.

스트림에서 읽은 데이터와 같이 변환할 데이터는 순차적 블록에서만 사용할 수 있습니다. 이 경우 또는 데이터의 양이 너무 커서 더 작은 블록으로 나누어야 하는 경우 메서드 또는 메서드 GetEncoder 에서 각각 반환된 GetDecoder 값을 사용합니다Decoder.Encoder

인코딩된 바이트가 파일 또는 스트림으로 저장될 때 제대로 디코딩되도록 하려면 인코딩된 바이트 스트림의 접두사를 프리앰블으로 접두사로 지정할 수 있습니다. 바이트 스트림의 시작 부분에 프리앰블을 삽입하는 것은 개발자의 책임입니다(예: 파일에 쓸 일련의 바이트 시작 부분). 메서드는 GetBytes 인코딩된 바이트 시퀀스의 시작 부분에 접두사를 추가하지 않습니다.

추가 정보

적용 대상