C언어, 8진수 10진수 변환, 팔진수를 십진수로 바꾸는 함수; Octal Number
Tuesday, August 28, 2007
스폰서 링크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
더 읽기:
☞ C언어 | C/C++ (Visual C++)
Post a Comment
<< Home