http://www.hackerschool.org/HS_Boards/zboard.php?desc=desc&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 : 3432 Date : 2013/04/07 02:57
|