¸®Æ² ¿£µð¾ð°ú ºò ¿£µð¾ð
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 yundreamÀÇ Endian ¹®¼­
2 Âü°í¹®Çå


1 yundreamÀÇ Endian ¹®¼­

endian ¿¡ ´ëÇØ¼­

1절. endian ¿¡ ´ëÇÑ ±âÃÊÁö½Ä

¾Æ¸¶ ³×Æ®¿÷ ÇÁ·Î±×·¡¹ÖÀ» Á¶±Ý ÇØº¸¾Ò´Ù¸é, Little-Endian, Big-Endian À̶ó´Â ¸»À» µé¾î º¸¾ÒÀ»°ÍÀÌ´Ù. ¶§·Î order byte, byte order ¶ó°í ¸»Çϱ⵵ Çϸç, ÀÛÀº ³¡µ¹ÀÌ, Å« ³¡µ¹ÀÌ(--;) ¶ó°í ¸»Çϱ⵵ ÇÑ´Ù. ÀÛÀº ³¡µ¹ÀÌ, Å« ³¡µ¹ÀÌ´Â ±èÄ¡ÇÏ ±³¼öÀÇ ¹ø¿ª¼­¿¡¼­ º¼¼ö ÀÖ´Â ´Ü¾îµéÀÌ´Ù.

°á·ÐºÎÅÍ ¸»ÇÏÀÚ¸é ¿£µð¾È À̶õ ÄÄÇ»ÅÍ¿¡¼­ µ¥ÀÌŸ°¡ ÀúÀåµÇ´Â ¼ø¼­¸¦ ¸»ÇÏ´Â °ÍÀÌ´Ù. ÄÄÇ»ÅÍ¿¡¼­ µ¥ÀÌŸ ÀúÀåÀº ¿©·¯ºÐµµ Àß ¾Æ½Ã´Ù ½ÃÇÇ byte ´ÜÀ§·Î ÀúÀåÀÌ µÈ´Ù. ±×·±µ¥ ÀÌ ´ÜÀ§ ÀúÀåÀ» ÇÒ¶§ °¢ Á¦Á¶¾÷ü(CPU)¿¡ µû¶ó¼­ ÀúÀåÀÌ µÇ´Â ¼ø¼­°¡ ¼­·Î ´Ù¸£´Ù. ¿¹¸¦µé¾î ¿ì¸®°¡ ÀÚÁÖ »ç¿ëÇÏ´Â 32bit Á¤¼öÀÇ °æ¿ì Çѹø¿¡ 4byte ÀÇ µ¥ÀÌŸ°¡ ÀúÀåÀÌ µÇ´Âµ¥, À̶§ °¡Àå ³·Àº ¹ÙÀÌÆ®ºÎÅÍ ÀúÀåÀ» ÇÏ´Â ¹æ½ÄÀÌ ÀÖ°í, °¡Àå ³ôÀº ¹ÙÀÌÆ®ºÎÅÍ ÀúÀåÀ» ÇÏ´Â ¹æ½ÄÀÌ Á¸ÀçÇÑ´Ù. ÀüÀÚ¸¦ Little Endian À̶ó°í Çϸç, ÈÄÀÚ¸¦ Big Endian À̶ó°í ÇÑ´Ù.


1.1절. ÀÚ¼¼ÇÑ µ¥ÀÌŸ ¹æ½Ä

Áï Little Endian ÀúÀ广½ÄÀÌ Àû¿ëµÉ°æ¿ì ´ÙÀ½°ú °°ÀÌ ÀúÀåµÇ°Ô µÈ´Ù.

    I : 32 bit int ÇüÁ¤¼ö


    |   1byte   |
    +-----------+-----------+-----------+-----------+
    |    I1     |    I2     |    I3     |    I4     |   
    +-----------+-----------+-----------+-----------+

 addr A   addr A+1      addr A+2     addr A+3
			
¹Ý¸é Big Endian Àº ´ÙÀ½°ú °°ÀÌ µ¥ÀÌŸ°¡ ÀúÀåµÉ °ÍÀÌ´Ù.
    I : 32 bit int ÇüÁ¤¼ö


    |   1byte   |
    +-----------+-----------+-----------+-----------+
    |    I4     |    I3     |    I2     |    I1     |   
    +-----------+-----------+-----------+-----------+

 addr A   addr A+1      addr A+2     addr A+3
			
º¸¸é ¾Ë°ÚÁö¸¸ ¼­·Î ¹Ý´ëµÇ´Â ¼ø¼­·Î µ¥ÀÌŸ°¡ ÀúÀåÀÌ µÊÀ» ¾Ë¼ö ÀÖÀ»°ÍÀÌ´Ù.

±×·³ Á»´õ ½ÇÁ¦ÀûÀÎ ¿¹¸¦µé¾î º¸µµ·Ï ÇϰڴÙ. Little Endian À» Àû¿ëÇÏ´Â °¡Àå ´ëÇ¥ÀûÀÎ CPU´Â Intel °è¿­ CPU À̸ç, Big Endian À» Àû¿ëÇÏ´Â °¡Àå ´ëÇ¥ÀûÀÎ CPU ´Â Sparc °è¿­ CPU ÀÌ´Ù.

¿ì¸®´Â Endian ÀÇ Å×½ºÆ®¸¦ À§Çؼ­ °£´ÜÇÑ ½î¾²¸¦ Çϳª Á¦ÀÛÇÒ °ÍÀÌ´Ù.

¿¹Á¦ : endian.c

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char **argv)
{
    int fd;
    int data=123456789;
    char c[4];
    fd = open("test_bin", O_CREAT|O_WRONLY);

    write(fd, (void *)&data, sizeof(int));
    memcpy(c, (void *)&data, sizeof(int));

    close(fd);
}
			
ÀÌ ÇÁ·Î±×·¥Àº test_bin À̶ó´Â À̸§ÀÇ ÆÄÀÏÀ» open ÇÑ´ÙÀ½ int Çü Á¤¼ö¸¦ ¾²´Â ÀÏÀ»ÇÑ´Ù. ¿ì¸®´Â À§ÀÇ ÇÁ·Î±×·¥À» Intel Linux ¿Í, Sparc Solaris ¿¡¼­ °¢°¢ ½ÇÇà½ÃÄѼ­ ±× °á°ú¸¦ ¾Ë¾Æº¼°ÍÀÌ´Ù. Sparck Solaris ¿¡¼­ À§ÀÇ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ,½ÇÇàÇÑÈÄ »ý¼ºµÇ´Â test_bin ÆÄÀÏÀ» ftp µîÀ» ÅëÇØ¼­ ¸®´ª½º·Î °¡Á®¿Í¼­ Å×½ºÆ®ÇÑ´Ù(µ¿ÀÏÇÑ È¯°æ¿¡¼­ Å×½ºÆ®ÇÏ´Â°Ô È¥µ¿À» ÇÇÇÒ¼ö ÀÖÀ½À¸·Î).

Linux ¿¡¼­ À§ÀÇ ÇÁ·Î±×·¥À» ½ÇÇàÈÄ ¸¸µé¾îÁø ÆÄÀÏÀ» test_bin_linux ·Î À̸§À» ¹Ù²Ù°í, Solaris ¿¡¼­ ¸¸µé¾îÁø ÆÄÀÏÀº test_bin_solaris ·Î À̸§À» ¹Ù²Ù°í ³ª¼­ od(1) ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ¼­ ±×°ªÀ» È®ÀÎÇØ º¸¾Ò´Ù.

[root@coco endian]# od -x test_bin_linux 
0000000 cd15 075b
0000004
[root@coco endian]# od -x test_bin_solaris 
0000000 5b07 15cd
			
À§ÀÇ °á°ú¸¦ º¸¸é Little Endian °ú Big Endian ÀÇ Â÷ÀÌÁ¡À» ½±°Ô ÀÌÇØÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù. ÀúÀ广½ÄÀÌ ¹ÙÀÌÆ® ´ÜÀ§·Î ¼­·Î ÀüÇô ¹Ý´ëÀÓÀ» ¾Ë¼ö ÀÖ´Ù.



2절. Endian ÀÌ ½ÇÁ¦ ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡¼­ Áß¿äÇѰ¡

Endian ¿¡ ÀÇÇÑ byte order Àº ÇØ´ç ½Ã½ºÅÛÀÇ CPU ¿¡¼­ ½Å°æÀ» ¾²¹Ç·Î, ´ÜÁö ÇϳªÀÇ ½Ã½ºÅÛ¿¡¼­¸¸ ÇÁ·Î±×·¡¹Ö ÀÛ¾÷À» ÇÑ´Ù¸é Endian ¿¡ ´ëÇØ¼­ ÀüÇô ½Å°æ ¾µÇʿ䰡 ¾ø´Ù.

±×·¯³ª ³×Æ®¿÷ÇÁ·Î±×·¡¹ÖÀ» ÇÒ°æ¿ì À̱âÁ¾°£ÀÇ (¿¹¸¦ µé¾î Sparc °ú Intel) Åë½ÅÀ» ¿°µÎ¿¡ µÎ¾î¾ß¸¸ÇÑ´Ù. ÀÌ·²°æ¿ì Endian ¿¡ ½Å°æÀ» ½áÁÖÁö ¾ÊÀ¸¸é ÀüÇô ¾û¶×ÇÑ °á°ú¸¦ °¡Áö°í ¿À°Ô µÈ´Ù.


2.1절. ±×·³ ³×Æ®¿÷ »ó¿¡¼­ ¾î¶² ¹®Á¦°¡ ¹ß»ýÇϴ°¡

À̹ø¿¡´Â ¼­¹ö Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ¼­¹ö ÇÁ·Î±×·¥Àº Sparc ¼Ö¶ó¸®½º¿¡, Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥Àº Inten Linux ¿¡¼­ °¢°¢ ÀÛµ¿Çϵµ·Ï ÇÒ°ÍÀÌ´Ù.

´ÙÀ½Àº ¼­¹ö ÇÁ·Î±×·¥ÀÌ´Ù.

server.c

	
#include <sys/time.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char **argv)
{
    int server_sockfd, client_sockfd, sockfd;
    struct sockaddr_in clientaddr, serveraddr;

    int fd_num;

    int state, client_len;
    int i, maxi, maxfd;
    int data;

    server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (server_sockfd == -1)
    {
        perror("socket error : ");
        exit(0);
    }

    bzero(&serveraddr, sizeof(serveraddr));
    serveraddr.sin_family = AF_INET;
    serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
    serveraddr.sin_port = htons(atoi(argv[1]));

    if(bind (server_sockfd, (struct sockaddr
             *)&serveraddr, sizeof(serveraddr)) < 0)
    {
        perror("bind error ");
        exit(0);
    }

    if (listen(server_sockfd, 5) < 0)
    {
        perror("listen error : ");
        exit(0);
    }

    client_sockfd = accept(server_sockfd, (struct
                    sockaddr *)&clientaddr, &client_len);
    read(client_sockfd, (void *)&data, sizeof(int));
    printf("%d\n", data);
    close(client_sockfd);
}
			

´ÙÀ½Àº Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÌ´Ù.

client.c

#include <sys/time.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char **argv)
{
    int client_sockfd;
    struct sockaddr_in clientaddr;
    int data = 123456789;
    int client_len;

    client_sockfd = socket(AF_INET, SOCK_STREAM, 0);
    clientaddr.sin_family = AF_INET;
    clientaddr.sin_addr.s_addr = inet_addr("192.168.100.190");
    clientaddr.sin_port = htons(atoi(argv[1]));

    client_len = sizeof(clientaddr);

    if (connect(client_sockfd, (struct sockaddr *)&clientaddr, client_len) < 0)
    {
        perror("Connect error : ");
        exit(0);
    }

    write(client_sockfd, (void *)&data, sizeof(int));
    close(client_sockfd);
}
			

Ŭ¶óÀÌ¾ðÆ®´Â 123456789 ¸¦ º¸³»°í ¼­¹ö´Â À̰ªÀ» ¹Þ¾Æ¼­ Ãâ·ÂÇÏ´Â ´Ü¼øÇÑ ÀÏÀ»ÇÑ´Ù. ±×·³ °¢°¢ÀÇ ½î¾²¸¦ ¼Ö¶ó¸®½º¿Í ¸®´ª½º·Î ¿Å°Ü¼­ ÄÄÆÄÀÏÈÄ ÀÛµ¿½ÃÄѺ¸µµ·Ï ÇÏÀÚ. ¼­¹öÃø¿¡¼­´Â ´ÙÀ½°ú °°Àº °á°ú¸¦ º¸¿©ÁÙ°ÍÀÌ´Ù.

[root@solaris test]# ./server 12345
365779719
			
ºÐ¸í Ŭ¶óÀÌ¾ðÆ®´Â 123456789 ¸¦ º¸³Â´Âµ¥, ¼­¹öÃø¿¡¼­´Â ÀüÇô ´Ù¸¥ °ªÀ» Ãâ·Â½ÃŲ´Ù. ÀÌÀ¯´Â °£´ÜÇÑ´Ù Endian ÀÌ ´Þ¶ó¼­ µ¥ÀÌŸÀÇ byte °¡ ¿ªÀüµÇ¾î Àֱ⠶§¹®ÀÌ´Ù.

±×·³ À̹®Á¦¸¦ ¾î¶»°Ô ÇØ°áÇØ¾ß ÇÒ±î. ÀÎÅ×³Ý »ó¿¡´Â ±×¾ß¸»·Î ´Ù¾çÇÑ ½Ã½ºÅÛÀÌ Á¸ÀçÇÏ°í ½Ã½ºÅÛ¸¶´Ù Endian Â÷À̰¡ Á¸ÀçÇҰǵ¥,


2.2절. ±×·³ Endian ¹®Á¦ÀÇ ÇØ°á¹æ¹ýÀº ?

°¡Àå °£´ÜÇÑ ÇØ°á¹æ¹ýÀº Endian ÀÌ Big À̵ç Little À̵ç Çϳª·Î ÅëÀϽÃŰ´Â °Å°ÚÁö¸¸ ÀÌ°Ç »ç½Ç ºÒ°¡´ÉÇÏ´Ù. ±×·³ »ý°¢ÇÒ¼ö ÀÖ´Â ¹æ¹ýÀÌ °øÅëµÇ´Â Endian À¸·Î º¯È¯ ½ÃŲ´ÙÀ½¿¡ ÀÚ½ÅÀÇ µ¥ÀÌŸ¸¦ Àü¼ÛÇÏ´Â ¹æ¹ýÀÌ µÉ°ÍÀÌ´Ù. ±×·¯¸é Àü¼ÛÇÏ´Â ÃøÀ̳ª Àü¼Û¹Þ´Â ÃøÀ̳ª ÀÌ °øÅëµÇ´Â Endian À» ¾Ë°í ÀÖÀ» °ÍÀÓÀ¸·Î byte order ¸¦ ½Ãų¼ö ÀÖÀ»°ÍÀÌ´Ù.

±×·¡¼­ network byte order À̶õ°ÍÀÌ Á¸ÀçÇÑ´Ù. Áï network ·Î µ¥ÀÌŸ¸¦ º¸³¾¶§´Â ¹«Á¶°Ç ÇϳªÀÇ Endian À¸·Î ÅëÀÏÀ» ½ÃŰ´Â °ÍÀÌ´Ù. network byte order ´Â Big Endian À» µû¸¥´Ù. ±×·¯¹Ç·Î ¿ì¸®´Â ½Ã½ºÅÛ¿¡ °ü°è¾øÀÌ ¹«Á¶°Ç byte ¸¦ Big Endian ¿¡ ¸Âµµ·Ï byte order ¸¦ ½ÃŲ´ÙÀ½¿¡ ³×Æ®¿÷À» ÅëÇØ¼­ ¿ÜºÎ·Î º¸³»¸é µÈ´Ù. ¹Þ´Â Ãø¿¡¼­´Â Àڱ⿡°Ô µé¾î¿À´Â Endian ÀÌ Big À¸·Î ÅëÀϵǾî ÀÖÀ½À¸·Î Big Endian À» ÀÚ½ÅÀÇ Endian ¿¡ ¸Âµµ·Ï byte order ½ÃÄÑÁÖ¸é µÉ°ÍÀÌ´Ù.

C ´Â ÀÌ·¯ÇÑ byte order ¸¦ À§ÇÑ ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù. ÇÔ¼ö°¡ ÇÏ´Â ÀÏÀº ÀÚ½ÅÀÇ host byte order À» network byte order ¿¡ ¸Â°Ô º¯°æ½ÃÄÑÁÖ´Â °Í°ú, network byte order À» ÀÚ½ÅÀÇ host byte order ¿¡ ¸Â°Ô º¯°æ½ÃÄÑÁÖ´Â 2°¡Áö ±ºÀÇ ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù.

#include <netinet/in.h>

unsigned long int htonl(unsigned long int hostlong);
unsigned short int htons(unsigned short int hostshort);

unsigned long int ntohl(unsigned long int netlong);
unsigned short int ntohs(unsigned short int netshort);
			
htonl °ú htons ´Â host to network Áï host byte order ¸¦ network byte order ·Î º¯°æ½ÃÄÑÁÖ¸ç, ntohs ´Â network to host ·Î ±× ¹Ý´ë·Î º¯°æ ÀÛ¾÷À» ÇÑ´Ù.

±×·¸´Ù¸é À§ÀÇ ½î½ºµé¿¡¼­ port ÁöÁ¤À» À§Çؼ­ ¿Ö htons ¸¦ »ç¿ëÇÏ´ÂÁö¸¦ ¾Ë¼ö ÀÖÀ»°ÍÀÌ´Ù.

serveraddr.sin_port = htons(atoi(argv[1]));
			
ÀÚ½ÅÀÇ host byte order ¸¦ network byte order ·Î º¯°æ ½ÃŰ´Â ÀÛ¾÷ÀÌ´Ù. linux ÀÇ °æ¿ì little endian À» µû¸£´Â byte order ¸¦ Çϴµ¥ ¸¸¾à nework byte order ·Î º¯°æ½ÃŰÁö ¾Ê´Â´Ù¸é, ÀڱⰡ ÀÔ·ÂÇѰͰú ÀüÇô ´Ù¸¥ port °¡ Àü´ÞµÉ°ÍÀÌ´Ù. ¿¹¸¦ µé¾î 349 ¹ø Æ÷Æ®¸¦ htons ¾øÀÌ ÁöÁ¤Çß´Ù¸é 34049 °¡ ÁöÁ¤µÈ°ÍÀ¸·Î Àü´ÞµÉ°ÍÀÌ´Ù. °á±¹ ¿øÇÏ´Â Æ÷Æ®¸¦ ãÁö ¸øÇÏ´Â °á°ú¸¦ °¡Á®¿Ã °ÍÀÌ´Ù.

ÀÌÁ¦ À§ÀÇ Äڵ带 ¾î¶»°Ô º¯°æ½ÃÄÑ¾ß ÇÒÁö °¨À» Àâ¾ÒÀ» °ÍÀÌ´Ù. data ¸¦ º¸³»´Â Ãø¿¡¼­´Â htonl À» ÀÌ¿ëÇØ¼­ host byte order ·Î º¯°æ½ÃÄÑÁÖ°í, ¹Þ´Â Ãø(¼­¹ö) ¿¡¼­´Â ntohl À» ÀÌ¿ëÇØ¼­ network byte order ¸¦ Àڽſ¡°Ô ¸Âµµ·Ï º¯°æ½ÃÄÑÁÖ¸é µÈ´Ù. ´ÙÀ½°ú °°ÀÌ Äڵ带 °¢°¢ º¯°æ½ÃŰ¸é µÈ´Ù.

client.c
========
data = htonl(data);
write(client_sockfd, (void *)&data, sizeof(int));

server.c
========
printf("%d\n", ntohl(data));
close(client_sockfd);
			


2.3절. ¶Ç ´Ù¸¥ ÇØ°áÃ¥Àº ¾ø³ª¿ä

byte order ÇÔ¼ö¸¦ »ç¿ëÇØ¼­ Little/Big Endian ¹®Á¦ÀÇ ÇØ°áÀº ÇßÁö¸¸, Á¶±Ý¸¸ »ý°¢Çغ¸¸é ÀÌ ¹æ¹ýÀÌ ²Ï ºÒÆíÇÒ¼ö ÀÖ´Ù´Â°É ¾Ë¼ö ÀÖ´Ù. µ¥ÀÌŸ¸¦ º¸³¾Àû¿£ ¹Ýµå½Ã Endian º¯È¯À» ÇØÁà¾ß ÇÑ´Ù. ²Ï ±ÍÂúÀº ÀÛ¾÷ÀÌ µÉ¼ö ÀÖ´Ù. Ȥ½Ã¶óµµ ½Ç¼ö·Î º¯È¯À» ÇÏÁö ¾ÊÀ»°æ¿ì¿¡´Â ¾î¶»°Ô µÉÁö ¾Ë¼ö ¾ø´Ù.

±×·¸´Ù¸é byte order ¿¡ ½Å°æ¾µÇÊ¿ä ¾øÀÌ byte ´ÜÀ§·Î µ¥ÀÌŸ¸¦ º¸³»¸é µÉ°ÍÀÌ´Ù. char ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. char Àº 1byte ÀÇ Å©±â¸¦ °¡ÁüÀ¸·Î byte order ¿¡ ½Å°æ¾µ Çʿ䰡 ¾øÀÌ »ç¿ë°¡´ÉÇÏ´Ù. ±×·¡¼­ ¸¹Àº °æ¿ì ³×Æ®¿÷ Åë½Å ÇÁ·Î±×·¡¹ÖÀ» ÇÒ°æ¿ì char ¸¸À» ÀÌ¿ëÇØ¼­ Åë½ÅÀ» Çϵµ·Ï ÇÏ´Â °æ¿ìµµ ÀÖ´Ù. ¿¹¸¦ µé¾î À§ÀÇ 12345678 À» int ÇüÀ¸·Î º¸³»´Â ´ë½Å ¹®ÀÚ¿­·Î º¯È¯½ÃÄѼ­ Àü¼ÛÇÏ´Â °ÍÀÌ´Ù. ÀÌ·²°æ¿ì¿¡´Â Endian ¹®Á¦¿¡ ½Å°æ¾µÇʿ䰡 ¾øÀ»°ÍÀÌ´Ù.


2.4절. Endian üũÇϱâ

´ÙÀ½°ú °°Àº °£´ÜÇÑ Äڵ带 ÀÌ¿ëÇØ¼­ ½Ã½ºÅÛÀÇ Endian À» üũÇÒ¼ö ÀÖ´Ù.

¿¹Á¦ : endian_check.c

int main()
{
    int i = 0x00000001;
    if( ((char *)&i)[0] )
        printf( "Littile Endian\n" );
    else
        printf( "Big Endian\n" );
}
			


3절. °á·Ð

ÀÌ»ó Endian ¿¡ ´ëÇØ¼­ °£´ÜÇÏ°Ô ¾Ë¾Æº¸¾Ò´Ù. º¸Åë int Çü°ú °°ÀÌ byte order °¡ ÇÊ¿äÇÑ µ¥ÀÌŸ Åë½ÅÀ» "binary Åë½ÅÀ» ÇÑ´Ù" ¶ó°í ¸»ÇÑ´Ù. ÃÖ±Ù¿¡´Â binary Åë½ÅÀ» »ç¿ëÇÏÁö ¾Ê°í ´ÜÁö text(char) ¸¸À» ÀÌ¿ëÇØ¼­ Åë½ÅÀ» ÇÏ´Â°Ô Á»´õ ÀϹÝÀûÀÎ Ãß¼¼ÀÌ´Ù. ±×·¯³ª ¾î´À ¹æ½ÄÀ» äÅÃÇϵçÁö »ç¿ëÇϱ⿡ °£ÆíÇÑ ¹æ½ÄÀ» ÅÃÇÏ¸é µÉ°ÍÀÌ´Ù.


2 Âü°í¹®Çå

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.