C#의 Convert.ToBase64CharArray() 메서드는 8비트 부호 없는 정수(byte) 배열의 일부를 Base-64 숫자로 인코딩된 유니코드 문자 배열의 해당 부분으로 변환할 때 사용합니다. 바이너리 데이터를 문자열 형태로 안전하게 전송하거나 저장해야 할 때 유용하게 활용되는 메서드입니다.
구문(Syntax)
Convert.ToBase64CharArray() 메서드의 기본 구문은 다음과 같습니다.
public static int ToBase64CharArray (byte[] arr, int offsetIn, int length, char[] outArray, int offsetOut);
매개변수 설명
- arr − 변환할 입력 배열로, 8비트 부호 없는 정수(byte) 배열입니다.
- offsetIn − 입력 배열(arr)에서 변환을 시작할 위치입니다.
- length − arr에서 변환할 요소의 개수입니다.
- outArray − 변환된 결과가 저장될 출력용 유니코드 문자(char) 배열입니다.
- offsetOut − outArray에서 결과를 저장하기 시작할 위치입니다.
이 메서드는 반환값으로 변환된 출력 배열에 저장된 바이트 수(int)를 돌려줍니다.
예제
이제 Convert.ToBase64CharArray() 메서드를 실제로 구현한 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main(){
byte[] val1 = {5,10,15,20,25,30};
long arrLen = (long)((4.0d / 3.0d) * val1.Length);
if (arrLen % 5 != 0)
arrLen += 5 - arrLen % 5;
char[] base64CharArray = new char[arrLen];
int res = Convert.ToBase64CharArray(val1, 0, val1.Length, base64CharArray, 0);
Console.WriteLine("Bytes (count) = "+ res);
Console.Write("Our base64CharArray...\n");
for (int j = 0; j < base64CharArray.Length; j++)
Console.Write("{0}", base64CharArray[j]);
}
}위 예제에서는 먼저 byte 배열 val1을 선언하고, Base-64 인코딩 시 필요한 출력 배열의 크기를 계산합니다. Base-64는 3바이트를 4문자로 변환하므로, 배열 길이에 4/3을 곱한 뒤 필요한 만큼 크기를 보정하여 base64CharArray를 생성합니다. 이후 ToBase64CharArray()를 호출해 전체 배열(시작 위치 0, 길이는 배열 전체)을 변환하고, 그 결과를 화면에 출력합니다.
실행 결과
위 프로그램을 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
Bytes (count) = 8 Our base64CharArray... BQoPFBke
출력 결과를 보면 6바이트의 원본 데이터가 Base-64로 인코딩되어 8문자의 문자열 BQoPFBke로 변환된 것을 확인할 수 있습니다. 이처럼 Convert.ToBase64CharArray() 메서드를 활용하면 바이너리 데이터를 손쉽게 Base-64 문자 배열로 변환할 수 있습니다.