티스토리 뷰

내 오늘날의 치욕을 잊지 않겠다.




TCP/UDP 통신, 또는 여러가지 다양한 상황에서 C언어는 DATA 자체를 BYTE 처리하려 보낼 것이다.


보통의 8bit 표현공간을 가진 통신클라이언트와 통신하게 될 경우 16진수를 이용하는데, 

(8 bit, 2^8 = 256, 16진수의 최대값 0xFF 255)

이처럼, 8 bit와 16진수 는 직관적으로 딱 맞아 떨어진다. 

(Why 8 bit? 8 bit = 1 byte, 즉 , 컴퓨터가 생각할 수 있는 최소단위는 1 byte로 보고.. 8 bit 이다....)


즉, 8bit 11110001 은 4자리씩 쪼갠다고 보았을때, 1111 0001 이다.

따라서 이것을 16진수로 표현하자면 0xF1 앞의 4자리와 뒤 4자리를 단순히 16진수 계산만 하면되는 것이다....


우선 서론은 이렇고, 


본론으로 들어가자면



C에서 이처럼 BYTE 처리를 하려면.... 우선 unsigned char 타입을 이용한다. (unsigned char 타입의 표현공간은 0~255)


// Hex 로 표현된 "String"

char *hexString = "0FFF022E";

// Hex String이 실제 Hex 값으로 Byte처리되어 들어갈 공간

unsigned char byteTest[200];


// 초기화

memset(byteTest, 0x00, sizeof(byteTest));


//    물론 여기선 수동으로 이렇게 처리해주겠지만, Hex string에서 2개씩 잘라 0xFF..등으로 만드는건 본인이 자동으로 처리해야겠지?

byteTest[0] = 0x0F;

byteTest[1] = 0xFF;

byteTest[2] = 0x02;

byteTest[3] = 0x2E;



이렇게 해 주면 byteTest는 Hex String값이 된다.




공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함