본문 바로가기
C#

C# - 문자와 문자열의 차이(string과 char)

by 개발 그리고 게발 2021. 7. 6.
728x90

문자와 문자열은 별다른 차이가 없어 보이지만 내부적으로는 큰 차이가 있습니다.

 

문자열은 문자의 배열 즉, 문자의 배열을 합쳐서 붙여놓은 것이 문자열입니다.

 


 

흔히 string문자열을 쓸 때 이런식으로("garage", "tomato"..) 사용하는데 이것들이 하나의 문자가 아니고 각각의 문자들의 배열인 문자열인 것입니다.

 

DataType을 string형식으로 표현할 땐 ""를,  char로 표현할 땐 ''를 사용합니다 그렇지 않으면 컴파일 에러가 발생하기도 하는데 문자와 문자열은 완벽히 다르기 때문입니다.

 

string은 char의 배열을 연결한 상태인데요 "abcd"는 DataType이 char인 'a', 'b', 'c', 'd' 문자들이 연결되어 "abcd"배열 즉 문자열을 형성하고 있습니다.

 

string문자열에 적용할 수 있는 기본 함수로 .ToCharArray()가 있는데 문자열을 문자의 배열로 다시 분할 할 수 있습니다.

 

return 형식으로는 char[]이며 아래와 같이 문자열를 문자 배열로 return하게 됩니다.

 

string str = "abcd";

// char_arr = {'a', 'b,', 'c', 'd'}
char[] char_arr = str.ToCharArray();

 

이것이 바로 문자와 문자열의 차이인데, 문자열은 문자의 배열 집합이라고 보시면 간단합니다.

 


 

또한 각각의 문자는 유니코드 문자인코딩 방식중의 하나인 UTF-16의 규칙을 따르고 있기때문에 각각의 문자는 유니코드 고유값을 가지고 있습니다.

 

컴퓨터가 문자를 읽을 때는 이 유니코드의 고유값을 Binary로 변환해 0000000000110110 이런식으로 읽어들이는 것이죠.

 

// unicode decimal value
// a = 97
// b = 98
// c = 99
// d = 100

// unicode binary value
// a = 0000000001100001
// b = 0000000001100010
// c = 0000000001100011
// d = 0000000001100100

string str = "abcd";
char[] char_arr = str.ToCharArray();

 


 

아무렇지 않게 쓰는 문자열이 내부적으로 들어가보면 심오한 세계가 있는 것 같습니다.. 

 

아래에는 UTF-16으로 표현가능한 문자들의 Binary, Hex 등 구체적인 값들을 표시해놓은 사이트 인데요 참고해보시면 좋을 것 같습니다.

 

Google에 UTF-16 Table이라고 검색하면 바로 접속해볼 수 있습니다.

 

참고 : https://asecuritysite.com/coding/asc2?val=0%2C255

 

 

 

728x90

댓글