ipv6주소(string) 를 char[] 로 변환 할때
글쓴이: rockmgh / 작성시간: 화, 2015/07/14 - 3:29오후
struct in6_addr st_addr6;
char ipv6_addr[16];
inet_pton(AF_INET6, "fe90:0000::347d:1e85:b11b:4af4", (void *) &ipv6_addr);
memcpy((void *) &st_addr6, (void *) &ipv6_addr, sizeof (st_addr6));
for(int i=0; i
printf("[%2d] %x %x\n", i, ipv6_addr[i], st_addr6.s6_addr[i]);
}
위에와 같이 string값을 char[] 로 변환 하고 있는데요.. 각배열에 있는 값을 16진수로 찍어 보니 결과 값이 아래처럼 나오네요
ipv6_addr에 있는 배열에 왜 fffffff 가 붙어서 나올까요???
[ 0] fffffffe fe
[ 1] ffffff90 90
[ 2] 0 0
[ 3] 0 0
[ 4] 0 0
[ 5] 0 0
[ 6] 0 0
[ 7] 0 0
[ 8] 34 34
[ 9] 7d 7d
[10] 1e 1e
[11] ffffff85 85
[12] ffffffb1 b1
[13] 1b 1b
[14] 4a 4a
[15] fffffff4 f4
Forums:
자답
이런식으로 0xff 를 넣어주면 되네요
printf("[%2d] %x %x\n", i, ipv6_addr[i] & 0xff, st_addr6.s6_addr[i]);
참조 : http://stackoverflow.com/questions/8060170/printing-hexadecimal-characters-in-c
unsigned char ipv6_addr[16];
unsigned char ipv6_addr[16];
댓글 달기