我以下列格式具有IPv6地址轉換的IPv6地址類型爲網絡字節順序
uint32_t的adress6 [4];
所以上面的數組存儲了4個uint32_t類型的數據,它們總共等於16個字節,因此是一個ipv6類型的地址。
如何將以上格式存儲的地址轉換爲網絡字節順序?
我以下列格式具有IPv6地址轉換的IPv6地址類型爲網絡字節順序
uint32_t的adress6 [4];
所以上面的數組存儲了4個uint32_t類型的數據,它們總共等於16個字節,因此是一個ipv6類型的地址。
如何將以上格式存儲的地址轉換爲網絡字節順序?
您需要詳細說明如何在陣列中佈置地址。
通常,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]);
}
不應該打電話給htonl嗎? – ramrunner 2014-12-19 04:06:28
正確的ramrunner。感謝您的支持。糾正。 – 2015-03-06 17:15:07
是網絡字節順序的32位字? – 2013-03-27 14:32:45
不,它們不是網絡字節順序。 – 2013-04-10 06:07:20