문자열과 16진수 값
기술노트 76992
아키텍처:
All
컴포넌트:
compiler
업데이트:
2021-05-12 오전 3:03
소개
예시 : 경우에 따라 16진수 아스키 값 (ascii) \x34를 사용하여 문자 '4'를 상수형 문자열에 쓸 수 있습니다.
const char test[] = "123\x3456";
그 결과로 문자열이 "123456"이기를 원하나,
사용될 문자가 \x34 인지 \x345 인지 알 수 없으므로, 이 경우 ANSI에 의해 동작은 "정의되지 않음 (undefined)" 으로 분류됩니다. 우리는 모든 컴파일러에 대해 엄격하게 구현하지 않았기 때문에, 다른 컴파일러/버전 마다 각기 다르게 동작이 일어날 수 있습니다.
한 가지 당연한 해결 방법은 다음과 같습니다:
const char test[] = '1','2','3','\x34','5','6','\0'};
그러나 긴 문자열에 대해선 각각의 문자를 작은따옴표로 묶는 것은 번거롭습니다.
가장 좋은 방법은 다음과 같이 문자열 병합을 사용하는 것입니다:
const char test[] = "123\x34""56";
또 다음 처럼 사용하기도 합니다:
const char test2[] = "123""\x34""56";
같은 방식으로 확장문자(wide characters)를 위한 사용방법입니다:
const wchar_t test3[] = L"123\x34"L"56";
또 다음 처럼 사용하기도 합니다:
const wchar_t test4[] = L"123"L"\x34"L"56";