2013-03-27 93 views
2

我以下列格式具有IPv6地址轉換的IPv6地址類型爲網絡字節順序

uint32_t的adress6 [4];

所以上面的數組存儲了4個uint32_t類型的數據,它們總共等於16個字節,因此是一個ipv6類型的地址。

如何將以上格式存儲的地址轉換爲網絡字節順序?

+0

是網絡字節順序的32位字? – 2013-03-27 14:32:45

+0

不,它們不是網絡字節順序。 – 2013-04-10 06:07:20

回答

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 2014-12-19 04:06:28

+0

正確的ramrunner。感謝您的支持。糾正。 – 2015-03-06 17:15:07

相關問題