2013-03-27 1 views
2

다음 형식의 ipv6 주소가 있습니다.ipv6 유형 주소를 네트워크 바이트 순서로 변환

uint32_t adress6 [4];

따라서 위의 배열은 16 바이트의 전체 및 따라서 ipv6 유형 주소와 같은 4 개의 uint32_t 유형 데이터를 저장합니다.

위의 형식으로 저장된 주소를 네트워크 바이트 순서로 변환하려면 어떻게해야합니까?

+0

네트워크 바이트 순서의 32 비트 단어 :

다음과 같은 일을 할 수있는 순서를 네트워크 얻으려면? –

+0

아니요 네트워크 바이트 순서가 아닙니다. –

답변

5

배열에 주소가 배치되는 방법에 대한 세부 정보가 필요합니다.

일반적으로 IPv6 주소는 uint32 요소로 네트워크 순서로 작성됩니다. uint32 요소 자체는 호스트 순서로 저장됩니다.

예 :

ADDRESS : 데드 : 쇠고기 : 피드 : 직면 카페 : 자기 : baad : c0de

adress6[0] = 0xdeadbeef; 
adress6[1] = 0xfeedface; 
adress6[2] = 0xcafebabe; 
adress6[3] = 0xbaadc0de; 

어레이는 네트워크 순서이지만 각 정수 소자는 호스트 될 예정 주문.

void network_order_me (uint32_t *host_ipv6, uint32_t *net_ipv6) { 
    net_ipv6[0] = htonl(host_ipv6[0]); 
    net_ipv6[1] = htonl(host_ipv6[1]); 
    net_ipv6[2] = htonl(host_ipv6[2]); 
    net_ipv6[3] = htonl(host_ipv6[3]); 
} 
+0

전화가 htonl이되어서는 안됩니까? – ramrunner

+0

램머를 수정하십시오. 그것을 잡아 주셔서 감사합니다. 수정 됨. –