컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Tuesday, August 28, 2007

C언어, 8진수 10진수 변환, 팔진수를 십진수로 바꾸는 함수; Octal Number


C언어에서, 팔진수와 십진수를 상호 변환하는 방법입니다. "팔진수 문자열"을 "십진수 숫자"로 변환할 때에는 strtoul 함수의 3번째 인수에 8을 넣어주면 됩니다. 반대로, 10진수를 8진수로 바꿀 때에는 printf 함수에서
%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;
}




▶▶ 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++)

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top