기본 콘텐츠로 건너뛰기

추천 가젯

Base64 이론과 파이썬 예제

BASE64 개요 우리는 데이터를 처리할 때, 문자열(ASCII) 데이터를 사용하기도 하고 이진(Binary)데이터를 사용하기도 한다. 문자열 데이터든, 이진 데이터든, 최종적으로 컴퓨터는 이진 데이터로 변환해 처리하지만, 이진 데이터는 사람이 읽기 힘들고, 문자열을 주로 전송하는 프로토콜(SMTP, HTTP 등)에서 원활한 작동이 일어나지 않을 수 있다. 따라서 이진 데이터를 문자열 데이터로 변환하는 과정이 필요하다. 이 과정에서 이진 데이터를 16진수(HEX)로 변환하는 방법이 고안되었다.   예를 들어, '01000101     00110001     01001100'이라는 데이터가 있다. 이 이진 데이터는 사람이 읽기도 힘들고, 무슨 데이터를 뜻하는지 확인하기 어렵다. 따라서 이 데이터를 표기할 때 10진수나 16진수를 이용하여 표현한다. 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 4 5 3 1 4 C 0x45 0x31 0x4C 010001010011000101001100 -> 45 31 4C 위와 같이 3바이트에 해당하는 내용을 단 여섯 문자로 표현할 수 있으며,  16진수의 표기범위인 0~F를 직관적으로 이해할 수 있기에 파일 데이터를 분석할 때 주로 HEX 표기를 사용한다. 다만, 이렇게 Binary를 HEX로 변환하는 것은, 데이터의 분석을 조금 더 쉽게 하기 위함일 뿐이지, Binary 데이터를 문자열로 변환하는 목적으로는 잘 사용되지 않는다. 그러면 어떻게 Binary 데이터를 문자열로, 그것도 효율적으로 바꿀 수 있을까. ASCII 바로 Binary 데이터와 ASCII 문자를 서로 연결하는 사전을 만들어서, 해당 사전에 맞게 Binary 데이터를 ASCII 문자로 변환한다. 이전의 HEX 표기처럼 특정한 패턴의 Binary 데이터를 ASCII 문자에 대칭시키는 것이다. 다만 이러한 방법을 생각해 내도 문제가 발생한다. 1바이트는 256개의 값...

[과제] 주차요금 정산기

문제

입차시간(시,분)과 출차시간(시,분)을 입력받아 주차시간과 주차요금을 출력하는 프로그램을 작성하시오. 단, 입차시간과 출차시간을 인자로 주차시간을 반환하는 함수와 주차시간을 인자로 주차요금을 반환하는 두 개의 함수를 작성하고 주차요금은 10분당 1000원으로 가정한다. 예로 주차시간 10분은 1000원, 11분은 2000원으로 계산한다.


풀이

#include <stdio.h>


int parkingtime(int in_hour, int in_minute, int out_hour, int out_minute);
int money(int parkingminutes);
int main()
{
int in_hour, in_minute;
int out_hour, out_minute;
int parkingminutes;
int parking_fee;

printf("몇 시 몇 분에 들어오셨나요? : ");
scanf_s("%d %d", &in_hour, &in_minute);
printf("몇 시 볓 분에 나가셨나요? : ");
scanf_s("%d %d", &out_hour, &out_minute);
parkingminutes = parkingtime(in_hour, in_minute, out_hour, out_minute);
printf("당신은 %d분 주차하였습니다.\n", parkingminutes);
parking_fee = money(parkingminutes);
printf("요금은 올림정책에 의해 %d원입니다.\n", parking_fee);

system("pause");
return 0;

}

int parkingtime(int in_hour, int in_minute, int out_hour, int out_minute)
{
int minute = 0;
minute += (out_hour - in_hour) * 60 + out_minute - in_minute;
return minute;
}

int money(int parkingminutes)
{
int temp_ten_minutes = parkingminutes / 10;
temp_ten_minutes *= 10;
if (parkingminutes > temp_ten_minutes)
temp_ten_minutes += 10;

return temp_ten_minutes * 100;
}

실행결과


댓글

가장 많이 본 글