본문 바로가기
C#

[C#] BigInteger

by DANEW 2023. 8. 18.

BigInteger 

 

BigInteger 구조체 (System.Numerics)

부호 있는 임의의 큰 정수를 나타냅니다.

learn.microsoft.com

- .NET 4.0부터 도입, 내장 형식이 아님

- 임의의 정수 형식에서 암묵적 변환이 허용

- 모든 산술 연산자, 비교 연산자, 상등 연산자를 중복적재

 

- 바이트 배열과의 상호호환성

 

- Math의 기능 중 일부분이 포함

반응형
using System;
using System.Numerics;
using System.Security.Cryptography;
 
namespace Practice
{
    class Program
    {
        static void Main(string[] args)
        {
            // 거듭 제곱을 이용한 큰 수 생성
            BigInteger googol = BigInteger.Pow(10, 100);
 
            // 파싱을 이용한 큰 수 생성
            BigInteger googol2 = BigInteger.Parse("1".PadRight(101, '0'));
 
            Console.WriteLine(googol);
            Console.WriteLine(googol2);
            Console.WriteLine();
 
 
            // 명시적 캐스팅
            double g2 = (double)googol;
            BigInteger g3 = (BigInteger)g2;  // 정밀도 손상
 
            Console.WriteLine(g3);
            Console.WriteLine();
 
 
            // 암/복호화에 사용할 수 있는 32비트 난수를 생성하여 BigInteger 변수에 배정
            RandomNumberGenerator rand = RandomNumberGenerator.Create();
            byte[] bytes = new byte[32];
            rand.GetBytes(bytes);
            var bigRandomNumber = new BigInteger(bytes);
 
            Console.WriteLine(bigRandomNumber);
            Console.WriteLine();
 
            // bytes로 되돌리기
            byte[] bytes2 = bigRandomNumber.ToByteArray();
            foreach (var item in bytes2)
            {
                Console.Write("{0:X}", item);
            }
            Console.WriteLine();
        }        
    }
}

 

 

 

반응형

'C#' 카테고리의 다른 글

[C#] Tuple  (1) 2023.08.22
[C#] 열거형과 System.Enum  (1) 2023.08.21
[C#] Random & RandomNumberGenerator  (1) 2023.08.20
[C#] Complex  (1) 2023.08.19
[C#] BitConverter  (1) 2023.08.17
[C#] XmlConvert  (1) 2023.08.16
[C#] Convert  (2) 2023.08.15
[C#] 서식화(Formatting)와 파싱(Parsing)  (1) 2023.08.14