다음을 통해 공유


UTF8Encoding.GetByteCount 메서드

정의

문자 집합을 인코딩할 경우 생성되는 바이트 수를 계산합니다.

오버로드

GetByteCount(ReadOnlySpan<Char>)

지정된 문자 범위를 인코딩하여 생성된 바이트 수를 계산합니다.

GetByteCount(String)

지정된 String의 문자를 인코딩하여 생성된 바이트 수를 계산합니다.

GetByteCount(Char*, Int32)

지정한 문자 포인터에서 시작되는 문자 집합을 인코딩할 경우 생성되는 바이트 수를 계산합니다.

GetByteCount(Char[], Int32, Int32)

지정한 문자 배열의 문자 집합을 인코딩할 경우 생성되는 바이트 수를 계산합니다.

GetByteCount(ReadOnlySpan<Char>)

Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs

지정된 문자 범위를 인코딩하여 생성된 바이트 수를 계산합니다.

public:
 override int GetByteCount(ReadOnlySpan<char> chars);
public override int GetByteCount (ReadOnlySpan<char> chars);
override this.GetByteCount : ReadOnlySpan<char> -> int
Public Overrides Function GetByteCount (chars As ReadOnlySpan(Of Char)) As Integer

매개 변수

chars
ReadOnlySpan<Char>

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

반환

지정된 문자 범위를 인코딩하여 생성된 바이트 수입니다.

예외

오류 검색이 사용되고 chars에 잘못된 문자 시퀀스를 포함합니다.

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

EncoderFallbackEncoderExceptionFallback로 설정됩니다.

설명

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

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

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

적용 대상

GetByteCount(String)

Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs

지정된 String의 문자를 인코딩하여 생성된 바이트 수를 계산합니다.

public:
 override int GetByteCount(System::String ^ chars);
public override int GetByteCount (string chars);
override this.GetByteCount : string -> int
Public Overrides Function GetByteCount (chars As String) As Integer

매개 변수

chars
String

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

반환

지정한 문자를 인코딩할 경우 생성되는 바이트 수입니다.

예외

chars이(가) null인 경우

결과 바이트 수가 정수로 반환될 수 있는 최대 수보다 큽니다.

오류 검색이 사용되고 chars에 잘못된 문자 시퀀스를 포함합니다.

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

EncoderFallbackEncoderExceptionFallback로 설정됩니다.

예제

다음 예제에서는 및 GetByteCount(String) 메서드를 GetMaxByteCount 호출하여 문자열을 인코딩하는 데 필요한 최대 바이트 수와 실제 바이트 수를 계산합니다. 또한 바이트 순서 표시를 사용하여 바이트 스트림을 저장하는 데 필요한 실제 바이트 수를 표시합니다.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        String chars = "UTF8 Encoding Example";
        Encoding utf8 = Encoding.UTF8;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF8 Encoding Example':
//          Maximum:         66
//          Actual:          21
//          Actual with BOM: 24
Imports System.Text

Module Example
    Public Sub Main()
        Dim chars As String = "UTF8 Encoding Example"
        Dim utf8 As Encoding = Encoding.UTF8

        Console.WriteLine("Bytes needed to encode '{0}':", chars)
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length))
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars))
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length)
    End Sub
End Module
' The example displays the following output:
'       Bytes needed to encode 'UTF8 Encoding Example':
'          Maximum:         66
'          Actual:          21
'          Actual with BOM: 24

설명

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

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

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

추가 정보

적용 대상

GetByteCount(Char*, Int32)

Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs

중요

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

지정한 문자 포인터에서 시작되는 문자 집합을 인코딩할 경우 생성되는 바이트 수를 계산합니다.

public:
 override int GetByteCount(char* chars, int count);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetByteCount (char* chars, int count);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetByteCount : nativeptr<char> * int -> int

매개 변수

chars
Char*

인코딩할 첫 번째 문자를 가리키는 포인터입니다.

count
Int32

인코딩할 문자 수입니다.

반환

지정한 문자를 인코딩할 경우 생성되는 바이트 수입니다.

특성

예외

charsnull입니다.

count가 0보다 작은 경우

또는

결과 바이트 수가 정수로 반환될 수 있는 최대 수보다 큽니다.

오류 검색이 사용되고 chars에 잘못된 문자 시퀀스를 포함합니다.

대체가 발생했습니다(전체 설명은 .NET의 문자 인코딩 참조).

EncoderFallbackEncoderExceptionFallback로 설정됩니다.

설명

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

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

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

추가 정보

적용 대상

GetByteCount(Char[], Int32, Int32)

Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs

지정한 문자 배열의 문자 집합을 인코딩할 경우 생성되는 바이트 수를 계산합니다.

public:
 override int GetByteCount(cli::array <char> ^ chars, int index, int count);
public override int GetByteCount (char[] chars, int index, int count);
override this.GetByteCount : char[] * int * int -> int
Public Overrides Function GetByteCount (chars As Char(), index As Integer, count As Integer) As Integer

매개 변수

chars
Char[]

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

index
Int32

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

count
Int32

인코딩할 문자 수입니다.

반환

지정한 문자를 인코딩할 경우 생성되는 바이트 수입니다.

예외

chars이(가) null인 경우

index 또는 count가 0보다 작습니다.

또는

indexcountchars에서 올바른 범위를 나타내지 않습니다.

또는

결과 바이트 수가 정수로 반환될 수 있는 최대 수보다 큽니다.

오류 검색이 사용되고 chars에 잘못된 문자 시퀀스를 포함합니다.

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

EncoderFallback 속성이 EncoderExceptionFallback로 설정되어 있습니다.

예제

다음 예제에서는 라틴어 대문자와 소문자로 배열을 채우고 메서드를 호출 GetByteCount(Char[], Int32, Int32) 하여 라틴어 소문자를 인코딩하는 데 필요한 바이트 수를 확인합니다. 그런 다음 바이트 순서 표시가 추가된 경우 필요한 총 바이트 수와 함께 이 정보를 표시합니다. 이 숫자는 라틴어 소문자를 인코딩하는 데 필요한 최대 바이트 수를 나타내는 메서드에서 반환 GetMaxByteCount 된 값과 비교합니다.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      int uppercaseStart = 0x0041;
      int uppercaseEnd = 0x005a;
      int lowercaseStart = 0x0061;
      int lowercaseEnd = 0x007a;
      // Instantiate a UTF8 encoding object with BOM support.
      Encoding utf8 = new UTF8Encoding(true);

      // Populate array with characters.
      char[] chars = new char[lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 2];
      int index = 0;
      for (int ctr = uppercaseStart; ctr <= uppercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }
      for (int ctr = lowercaseStart; ctr <= lowercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }

      // Display the bytes needed for the lowercase characters.
      Console.WriteLine("Bytes needed for lowercase Latin characters:");
      Console.WriteLine("   Maximum:         {0,5:N0}",
                        utf8.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          utf8.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:            81
//          Actual:             26
//          Actual with BOM:    29
Imports System.Text

Module Example
   Public Sub Main()
      Dim uppercaseStart As Integer = &h0041
      Dim uppercaseEnd As Integer = &h005a
      Dim lowercaseStart As Integer = &h0061
      Dim lowercaseEnd As Integer = &h007a
      ' Instantiate a UTF8 encoding object with BOM support.
      Dim utf8 As New UTF8Encoding(True)
      
      ' Populate array with characters.
      Dim chars(lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 1) As Char
      Dim index As Integer = 0
      For ctr As Integer = uppercaseStart To uppercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next
      For ctr As Integer = lowercaseStart To lowercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next

      ' Display the bytes needed for the lowercase characters.
        Console.WriteLine("Bytes needed for lowercase Latin characters:")
        Console.WriteLine("   Maximum:         {0,5:N0}",
                          utf8.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual:          {0,5:N0}",
                          utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual with BOM: {0,5:N0}",
                          utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1) +
                                            utf8.GetPreamble().Length)
   End Sub
End Module
' The example displays the following output:
'       Bytes needed for lowercase Latin characters:
'          Maximum:            81
'          Actual:             26
'          Actual with BOM:    29

설명

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

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

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

추가 정보

적용 대상