我以下列格式具有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