ÇÁ·Î±×·¡¹Ö

 3200, 1/160 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   SIstarA
   c¾ð¾î Áú¹®

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6326 [º¹»ç]


/*»ç¿ëÀÚ·Î ºÎÅÍ 2ÀÚ¸®ÀÇ 16Áø¼ö¸¦ ÀÔ·Â ¹Þ¾Æ, MS-DOS Date/TimeÀÇÇü½ÄÀ¸·Î °ªÀ» ÇØ¼®ÇÏ¿©, ½Ã°£À» Ãâ·ÂÇÏ´Â ÇÔ¼ö¸¦ ±¸ÇöÇÏ°í ¿ø¸®¸¦
¼³¸íÇϽÿÀ. ÁÖ¾îÁø ¼Ò½º¿¡ ToDo ¿Ü Ãß°¡Àû ¼öÁ¤ÀÌ ÇÊ¿äÇߴ°¡? ÇÊ¿äÇß´Ù¸é ¿Ö
Çߴ°¡?
? ÀÔ·Â: 2ÀÚ¸®ÀÇ 16Áø¼ö (4¹ÙÀÌÆ®)
? Ãâ·Â: Text Çü½ÄÀÇ ³¯Â¥ Ç¥Çö
¿¹) 2013³â 3¿ù 14ÀÏ 14½Ã 53ºÐ 04ÃÊ
*/

#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>


#define LENGTH 250

int Test_Little_Endian();
void DOSTIME_to_Text(int dostime);
int LittleEndian_to_BigEndian(int num);
unsigned int extract_hex(const char *src);

int main()
{
        char input_buffer[251]={0,};
        int count = 0;
        unsigned int before_endian = 0;
        unsigned int after_enddian = 0;

        printf("½Ã°£º¯È¯Çغ¸ÀÚ\n");
        printf("Æ÷·»½Ä½Ã½ºÅÛ\n");
        printf("input (8hex value)");

        count = input_string(input_buffer);
        if(count !=8)
        {
                printf("À߸øÀÔ·ÂÇϼ̽À´Ï´Ù.");
                return -1;
        }
        before_endian = extract_hex(input_buffer);

        if(/*ÀÛ¾÷*/)//if the input data is on the little endian
        {
                //ÀÛ¾÷
        }
        else
        {
                //ÀÛ¾÷
        }
        DOSTIME_to_Text(after_enddian);

        getchar();
        return 0;

}
int Test_Little_Endian()
{
unsigned num = 0x00FF;
return *((char*)&num)==(num>>24)?0:1;

return 0;
}

void DOSTIME_to_Text(int dostime)
{
        int year;
        int month;
        int day;
        int hour;
        int min;
        int sec;
        int result;

        sec=0;//ÀÛ¾÷
        min=0;//ÀÛ¾÷
        hour=0;//ÀÛ¾÷
        day=0;//ÀÛ¾÷
        month=0;//ÀÛ¾÷
        year=0;//ÀÛ¾÷
        printf("%d ³â %d ¿ù %d ÀÏ %d ½Ã %d ºÐ %d ÃÊ",year,month,day,hour,min,sec);

}
int LittleEndian_to_BigEndian(int num)
{

        return ((num>>24)&0xff) | //move byte 3 to byte 0
                        ((num<<8)&0xff0000)|
                        ((num>>8)&0xff00)|
                        ((num<<24)&0xff000000);
}

unsigned int extract_hex(const char *src)
{
        int errno;
        char hex_low[4+1]={0};
        char hex_high[4+1]={0};
        unsigned int val;
        unsigned long val2;

        if(strlen(src)<8) return -1;

        memcpy(hex_low, src+4, 4);
        memcpy(hex_high, src, 4);
if(strspn(hex_low,"0123456789AaBbCcDdEeFf")<4) return -1;
if(strspn(hex_high,"0123456789AaBbCcDdEeFf")<4) return -1;

val = strtol(hex_high,NULL,16)<<16;
val+=strtol(hex_low,NULL,16);
return val;

}
int input_string(char * s)
{
        char *t = 0;
        int size = 0;
        int len;
        do
        {
                s[LENGTH-2] = 0;
                fgets(s, LENGTH, stdin);
                len = strlen(s);
                size +=len;
                t = realloc(t,size);
                strcat(t,s);
        }
        while(len == LENGTH-1 && s [LENGTH-2] !='\n');
        return len-1;
}

  Hit : 4244     Date : 2013/04/07 02:57