본문 바로가기

컴퓨터 이야기/개발 이야기

[iOS] 문자열 포맷 지정자 (String Format Specifiers)

iOS 개발시 많이 사용하는 문자열 포맷 메소드나 함수에서 지원하는 포맷 지정자입니다.

"%@""%d"와 같이 정말 자주 사용하는 지정자와 달리 가끔씩 사용하게 되는 지정자들이 있습니다. 애플의 가이드를 보면 자세히 나와 있지만 개인적으로 쉽게 검색을 하기 위해서 포스팅합니다.  

 지정자  의미
 %@  description이나 descriptionWithLocale: 함수를 사용해서 오브젝트 C 객체의 내용을 출력합니다.
 %%  '%' 문자를 출력합니다.
 %d, %D, %i  부호가 있는 32비트 정수 (int)
 Signed 32-bit integer
 %u, %U  부호가 없는 32비트 정수 (unsigned int)
 Unsigned 32-bit integer
 %hi  부호가 있는 16비트 정수 (short)
 Signed 16-bit integer
 %hu  부호가 없는 16비트 정수 (unsigned short)
 Unsigned 16-bit integer
 %qi  부호가 있는 64비트 정수 (long long)
 Signed 64-bit integer
 %qu  부호가 없는 64비트 정수 (unsigned long long)
 Unsigned 64-bit integer
 %x  소문자를 사용해 16진수로 표시한 부호가 없는 32비트 정수 (unsigned int)
 Unsigned 32-bit integer, printed in hexadecimal using the digits 0-9 and lowercase a-f
 %X  대문자를 사용해 16진수로 표시한 부호가 없는 32비트 정수 (unsigned int)
 Unsigned 32-bit integer, printed in hexadecimal using the digits 0-9 and uppercase A-F
 %qx  소문자를 사용해 16진수로 표시한 부호가 없는 64비트 정수 (unsigned long long)
 Unsigned 64-bit integer, printed in hexadecimal using the digits 0-9 and lowercase a-f
 %qX  대문자를 사용해 16진수로 표시한 부호가 없는 64비트 정수 (unsigned long long)
 Unsigned 64-bit integer, printed in hexadecimal using the digits 0-9 and uppercase A-F
 %o, %O  8진수로 표시한 부호가 없는 32비트 정수 (unsigned int)
 Unsigned 32-bit integer, printed in octal
 %f  64비트 부동소수점 숫자 (double)
 64-bit floating-point number
 %F  10진수 표기된 64비트 부동소수점 숫자 (double)
 64-bit floating-point number, printed in decimal notation
 %e  소문자 e를 사용해 지수 표기법으로 표시한 64비트 부동소수점 숫자 (double)
 64-bit floating-point number, printed in scientific notation using a lowercase e to introduce the exponent
 %E  대문자 E를 사용해 지수 표기법으로 표시한 64비트 부동소수점 숫자 (double)
 64-bit floating-point number, printed in scientific notation using an uppercase e to introduce the exponent
 %g  지수가 -4보다 작거나 또는 크거나 또는 정확히 같다면 %e 스타일로 표시하고 그렇지 않다면 %f 스타일로 표시하는 64비트 부동소수점 숫자 (double)
 64-bit floating-point number, printed in the style of %e if the exponent is less than -4 or greater than or equal to the precision, in the style of %f otherwise
 %G  지수가 -4보다 작거나 또는 크거나 또는 정확히 같다면 %E 스타일로 표시하고 그렇지 않다면 %f 스타일로 표시하는 64비트 부동소수점 숫자 (double)
 64-bit floating-point number, printed in the style of %e if the exponent is less than -4 or greater than or equal to the precision, in the style of %f otherwise
 %c  부호가 없는 8비트 문자 (unsigned char)
 8-bit unsigned character
 %C  16비트 유니코드 문자 (unichar)
 16-bit Unicode character
 %s  Null로 끝나는 부호가 없는 8비트 문자열(C 문자열)
 Null-terminated array of 8-bit unsigned characters
 %S  Null로 끝나는 16비트 유니코드 문자열
 Null-terminated array of 16-bit Unicode characters
 %p  0x로 시작하고 소문자를 사용해 16진수로 표시한 포인터 주소
 Void pointer (void *), printed in hexadecimal with the digits 0-9 and lowercase a-f, with a leading 0x


<플랫폼에 종속적인 포맷 지정자>
 타입  포맷 지정자  고려사항
 NSInteger  %ld or %lx  값을 long 타입으로 변환하라.
 NSUInteger  %lu or %lx  값을 부호없는 long 타입으로 변환하라.
 CGFloat  %f or %g  %f works for floats and doubles when formatting
 CFIndex  %ld or %lx  NSInteger와 같다.
 pointer  %p  %p는 출력시 0x를 붙인다. 이를 원하지 않는다면 %lu를 사용하라.
 long long  %lld or %llx  long long은 32비트와 64비트 플랫폼 양쪽에서 64비트이다.
 unsigned long long  %llu or %llx  unsigned long long은 32비트와 64비트 플랫폼 양쪽에서 64비트이다.