Tuesday, August 28, 2007
C언어, 8진수 10진수 변환, 팔진수를 십진수로 바꾸는 함수; Octal Number
C언어에서, 팔진수와 십진수를 상호 변환하는 방법입니다. "팔진수 문자열"을 "십진수 숫자"로 변환할 때에는 strtoul 함수의 3번째 인수에 8을 넣어주면 됩니다. 반대로, 10진수를 8진수로 바꿀 때에는 printf 함수에서
%o 라는 포맷을 지정하면 됩니다. 다음 예제와 같습니다.
아라비아 숫자 앞에 영(0)을 붙이면 8진수 상수로서 인식됩니다.
예제 소스 파일명: example.cpp
▶▶ C언어] 십진수 정수, 16진수 헥사(Hex)로 변환/출력 함수? 방법은?
▶▶ 윈도우 계산기로, 16진수(Hex) 10진수(Dec) 8진수(Oct) 2진수(Bin) 변환
16진법 2진법 10진수, 아스키 유니코드 상호 변환기: ▶▶ 16진수 헥사, 2진수, 10진수, 8진법 변환 계산기; Hex Calc
%o 라는 포맷을 지정하면 됩니다. 다음 예제와 같습니다.
아라비아 숫자 앞에 영(0)을 붙이면 8진수 상수로서 인식됩니다.
8진법 10진법 숫자 바꾸기 예제 C소스
예제 소스 파일명: example.cpp
#include <stdio.h>
#include <stdlib.h>
#define STR_SIZE 100
int main(void) {
char str[STR_SIZE];
//////////////////////////////////////////
// 팔진수를 십진수로 바꾸기
//////////////////////////////////////////
// "0142"라는 8진수 문자열을, 10진수 숫자 98로 변환
char *s = "0142"; // 앞에 0이 없이 그냥 142 라고 해도 됩니다
unsigned long n = strtoul(s, NULL, 8);
printf("%u\n", n);
// 출력 결과: 98
// "팔진수 상수 숫자"를, 10진수 숫자로 화면에 출력
// 앞에 0(제로)을 붙여서 팔진수 상수라는 사실을 알려주어야 함
printf("%d\n", 0142); // 출력 결과: 98
//////////////////////////////////////////
// 십진수를 팔진수로 바꾸기
//////////////////////////////////////////
// 10진수 숫자 98을 팔진수 142 로 화면에 출력
// 퍼센트 기호 + 소문자o (오) 라는 포맷 사용
printf("%o\n", 98); // 출력 결과: 142
// 앞에 8진수 접두사 0(제로)를 붙이려면
printf("0%o\n", 98); // 출력 결과: 0142
// 십진수 숫자 98을, 팔진수 문자열 "0142" 로 변환한 후,
// "0142"를 화면 출력이 아닌, str 배열에 문자열로서 저장
// sprintf_s 함수는 비주얼C++ 2005 이상에서만 사용 가능
sprintf_s(str, STR_SIZE, "0%o\n", 98);
printf("문자열이 된 팔진수입니다: %s\n", str);
// 출력 결과: 문자열이 된 팔진수입니다: 0142
return 0;
}
#include <stdlib.h>
#define STR_SIZE 100
int main(void) {
char str[STR_SIZE];
//////////////////////////////////////////
// 팔진수를 십진수로 바꾸기
//////////////////////////////////////////
// "0142"라는 8진수 문자열을, 10진수 숫자 98로 변환
char *s = "0142"; // 앞에 0이 없이 그냥 142 라고 해도 됩니다
unsigned long n = strtoul(s, NULL, 8);
printf("%u\n", n);
// 출력 결과: 98
// "팔진수 상수 숫자"를, 10진수 숫자로 화면에 출력
// 앞에 0(제로)을 붙여서 팔진수 상수라는 사실을 알려주어야 함
printf("%d\n", 0142); // 출력 결과: 98
//////////////////////////////////////////
// 십진수를 팔진수로 바꾸기
//////////////////////////////////////////
// 10진수 숫자 98을 팔진수 142 로 화면에 출력
// 퍼센트 기호 + 소문자o (오) 라는 포맷 사용
printf("%o\n", 98); // 출력 결과: 142
// 앞에 8진수 접두사 0(제로)를 붙이려면
printf("0%o\n", 98); // 출력 결과: 0142
// 십진수 숫자 98을, 팔진수 문자열 "0142" 로 변환한 후,
// "0142"를 화면 출력이 아닌, str 배열에 문자열로서 저장
// sprintf_s 함수는 비주얼C++ 2005 이상에서만 사용 가능
sprintf_s(str, STR_SIZE, "0%o\n", 98);
printf("문자열이 된 팔진수입니다: %s\n", str);
// 출력 결과: 문자열이 된 팔진수입니다: 0142
return 0;
}
▶▶ C언어] 십진수 정수, 16진수 헥사(Hex)로 변환/출력 함수? 방법은?
▶▶ 윈도우 계산기로, 16진수(Hex) 10진수(Dec) 8진수(Oct) 2진수(Bin) 변환
16진법 2진법 10진수, 아스키 유니코드 상호 변환기: ▶▶ 16진수 헥사, 2진수, 10진수, 8진법 변환 계산기; Hex Calc
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home