将Ipv6类型地址转换为网络字节顺序

Sum*_*Das 2 ipv6 uint32

我有一个ipv6地址,格式如下

uint32_t adress6 [4];

所以上面的数组存储了4个uint32_t类型的数据,总共等于16个字节,因此是一个ipv6类型的地址.

如何将以上格式存储的地址转换为网络字节顺序?

Met*_*ton 5

您将需要有关如何在数组中布置地址的详细信息.

通常,IPv6地址是使用网络顺序的uint32元素构建的.uint32元素本身按主机顺序存储.

例:

地址:死了:牛肉:饲料:面子:咖啡馆:宝贝:宝贝:c0de

adress6[0] = 0xdeadbeef;
adress6[1] = 0xfeedface;
adress6[2] = 0xcafebabe;
adress6[3] = 0xbaadc0de;
Run Code Online (Sandbox Code Playgroud)

该数组按网络顺序排列,但每个整数元素将按主机顺序排列.

要获得网络订单,您可以执行以下操作:

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]);
}
Run Code Online (Sandbox Code Playgroud)