BigInteger.ToByteArray 메서드

정의

오버로드

ToByteArray()

BigInteger 값을 바이트 배열로 변환합니다.Converts a BigInteger value to a byte array.

ToByteArray(Boolean, Boolean)

가능한 최소 바이트 수를 사용하여 이 BigInteger의 값을 바이트 배열로 반환합니다.Returns the value of this BigInteger as a byte array using the fewest number of bytes possible. 값이 0이면 해당 요소가0x00인 1바이트 배열을 반환합니다.If the value is zero, returns an array of one byte whose element is 0x00.

ToByteArray()

BigInteger 값을 바이트 배열로 변환합니다.Converts a BigInteger value to a byte array.

public:
 cli::array <System::Byte> ^ ToByteArray();
public byte[] ToByteArray ();
member this.ToByteArray : unit -> byte[]
Public Function ToByteArray () As Byte()

반환

Byte[]

현재 BigInteger 개체를 바이트 배열로 변환한 값입니다.The value of the current BigInteger object converted to an array of bytes.

예제

다음 예에서는 일부 BigInteger 값이 바이트 배열로 표시 되는 방법을 보여 줍니다.The following example illustrates how some BigInteger values are represented in byte arrays.

using System;
using System.Numerics;

public class Example
{
   static byte[] bytes;
   
   public static void Main()
   {
      BigInteger[] numbers = { BigInteger.MinusOne, BigInteger.One, 
                               BigInteger.Zero, 120, 128, 255, 1024, 
                               Int64.MinValue, Int64.MaxValue, 
                               BigInteger.Parse("90123123981293054321") };
      foreach (BigInteger number in numbers)
      {
         bytes = number.ToByteArray();
         Console.Write("{0} ({1}) -> ", number, number.ToString(GetSpecifier()));
         Console.Write("{0} bytes: ", bytes.Length);
         foreach (byte byteValue in bytes)
            Console.Write("{0:X2} ", byteValue);

         Console.WriteLine();
      }   
   }

   private static string GetSpecifier()
   {
      return "X" + (bytes.Length * 2).ToString();
   }
}
// The example displays the following output:
//    -1 (FF) -> 1 bytes: FF
//    1 (01) -> 1 bytes: 01
//    0 (00) -> 1 bytes: 00
//    120 (78) -> 1 bytes: 78
//    128 (0080) -> 2 bytes: 80 00
//    255 (00FF) -> 2 bytes: FF 00
//    1024 (0400) -> 2 bytes: 00 04
//    -9223372036854775808 (8000000000000000) -> 8 bytes: 00 00 00 00 00 00 00 80
//    9223372036854775807 (7FFFFFFFFFFFFFFF) -> 8 bytes: FF FF FF FF FF FF FF 7F
//    90123123981293054321 (04E2B5A7C4A975E971) -> 9 bytes: 71 E9 75 A9 C4 A7 B5 E2 04
Imports System.Numerics

Module Example
   Dim bytes() As Byte
      
   Public Sub Main()
      Dim numbers() As BigInteger = { BigInteger.MinusOne, BigInteger.One, 
                                      BigInteger.Zero, 120, 128, 255, 1024, 
                                      Int64.MinValue, Int64.MaxValue, 
                                      BigInteger.Parse("90123123981293054321") }
      For Each number As BigInteger In numbers
         bytes = number.ToByteArray()
         Console.Write("{0} ({1}) -> ", number, number.ToString(GetSpecifier()))
         Console.Write("{0} bytes: ", bytes.Length)
         For Each byteValue As Byte In bytes
            Console.Write("{0:X2} ", byteValue)
         Next
         Console.WriteLine()
      Next   
   End Sub
   
   Private Function GetSpecifier() As String
      Return "X" + CStr(bytes.Length * 2)
   End Function
End Module
' The example displays the following output:
'    -1 (FF) -> 1 bytes: FF
'    1 (01) -> 1 bytes: 01
'    0 (00) -> 1 bytes: 00
'    120 (78) -> 1 bytes: 78
'    128 (0080) -> 2 bytes: 80 00
'    255 (00FF) -> 2 bytes: FF 00
'    1024 (0400) -> 2 bytes: 00 04
'    -9223372036854775808 (8000000000000000) -> 8 bytes: 00 00 00 00 00 00 00 80
'    9223372036854775807 (7FFFFFFFFFFFFFFF) -> 8 bytes: FF FF FF FF FF FF FF 7F
'    90123123981293054321 (04E2B5A7C4A975E971) -> 9 bytes: 71 E9 75 A9 C4 A7 B5 E2 04

설명

이 메서드에서 반환 된 배열의 각 바이트는 little endian 순서로 표시 됩니다.The individual bytes in the array returned by this method appear in little-endian order. 즉, 값의 낮은 순서 바이트 고차 바이트 앞에 야 합니다.That is, the lower-order bytes of the value precede the higher-order bytes. 배열의 첫 번째 바이트는 BigInteger 값의 처음 8 비트를 반영 하 고, 두 번째 바이트는 다음 8 비트를 반영 하는 식입니다.The first byte of the array reflects the first eight bits of the BigInteger value, the second byte reflects the next eight bits, and so on. 예를 들어, 1024, 값 또는 0x0400에는 다음 2 바이트 배열로 저장 됩니다.For example, the value 1024, or 0x0400, is stored as the following array of two bytes:

요소Element 바이트 값Byte value
00 0x000x00
11 0x040x04

음수 값은 2의 보수 표현이 가장 간단한 가능한 폼에서 사용 하 여 배열에 기록 됩니다.Negative values are written to the array using two's complement representation in the most compact form possible. 예를 들어-1은 0xFF, 0xFF 또는 0xFF, 0xFF, 0xFF, 0xFF와 같은 여러 요소가 포함 된 배열이 아니라 값이 0xFF 된 단일 바이트로 표시 됩니다.For example, -1 is represented as a single byte whose value is 0xFF instead of as an array with multiple elements, such as 0xFF, 0xFF or 0xFF, 0xFF, 0xFF, 0xFF.

두 개의 보수 표현은 항상 배열에서 마지막 바이트의 가장 높은 순서 비트 (Array.Length- 1의 바이트)를 부호 비트로 해석 하므로 메서드는 부호 비트가 설정 된 것으로 해석 될 수 있는 양수 값을 구분 하기 위해 값이 0 인 추가 요소가 포함 된 바이트 배열을 반환 합니다.Because two's complement representation always interprets the highest-order bit of the last byte in the array (the byte at position Array.Length- 1) as the sign bit, the method returns a byte array with an extra element whose value is zero to disambiguate positive values that could otherwise be interpreted as having their sign bits set. 예를 들어 값 120 또는 0x780x78단일 바이트 배열로 표시 됩니다.For example, the value 120 or 0x78 is represented as a single-byte array: 0x78. 그러나 128 또는 0x80은 2 바이트 배열로 표시 됩니다. 0x80, 0x00.However, 128, or 0x80, is represented as a two-byte array: 0x80, 0x00.

BigInteger 값을 바이트 배열에 저장 한 다음 BigInteger(Byte[]) 생성자를 사용 하 여 복원 하는 방식으로 값을 라운드트립 할 수 있습니다.You can round-trip a BigInteger value by storing it to a byte array and then restoring it using the BigInteger(Byte[]) constructor.

주의

코드 값을 복원 하기 전에이 메서드에서 반환 된 배열의 각 바이트의 값을 수정 해야 부호 비트 실수로 변경 하지 마십시오.If your code modifies the value of individual bytes in the array returned by this method before it restores the value, you must make sure that you do not unintentionally change the sign bit. 예를 들어 가장 높은 순위의 비트 바이트 배열의 마지막 요소에는 양수 값을 늘리면 됩니다 설정 값이 배열의 끝에 0 인 새 바이트를 추가할 수 있습니다.For example, if your modifications increase a positive value so that the highest-order bit in the last element of the byte array becomes set, you can add a new byte whose value is zero to the end of the array.

ToByteArray(Boolean, Boolean)

가능한 최소 바이트 수를 사용하여 이 BigInteger의 값을 바이트 배열로 반환합니다.Returns the value of this BigInteger as a byte array using the fewest number of bytes possible. 값이 0이면 해당 요소가0x00인 1바이트 배열을 반환합니다.If the value is zero, returns an array of one byte whose element is 0x00.

public byte[] ToByteArray (bool isUnsigned = false, bool isBigEndian = false);
member this.ToByteArray : bool * bool -> byte[]
Public Function ToByteArray (Optional isUnsigned As Boolean = false, Optional isBigEndian As Boolean = false) As Byte()

매개 변수

isUnsigned
Boolean

서명되지 않은 인코딩을 사용하려면 true, 그렇지 않으면 false입니다.true to use unsigned encoding; otherwise, false.

isBigEndian
Boolean

Big endian 바이트 순서로 바이트를 쓰려면 true, 그렇지 않으면 false입니다.true to write the bytes in a big-endian byte order; otherwise, false.

반환

Byte[]

현재 BigInteger 개체를 바이트 배열로 변환한 값입니다.The value of the current BigInteger object converted to an array of bytes.

예외

isUnsignedtrue이고 Sign이 음수인 경우:If isUnsigned is true and Sign is negative.

설명

정수 값 33022는 다음과 같은 네 가지 배열로 내보낼 수 있습니다.The integer value 33022 can be exported in four different arrays:

속성Properties 결과Result
isUnsigned: false, isBigEndian: false new byte[] { 0xFE, 0x80, 0x00 }
isUnsigned: false, isBigEndian: true new byte[] { 0x00, 0x80, 0xFE }
isUnsigned: true, isBigEndian: false new byte[] { 0xFE, 0x80 }
isUnsigned: true, isBigEndian: true new byte[] { 0x80, 0xFE }

적용 대상