在C上将IPv4转换为IPv6

时间:2016-09-27 20:54:32

标签: c ipv6 ipv4

我尝试使用某些转换为uint8_t将IPv4转换为IPv6。我知道IPv4有4个字节,而IPv6 16无符号整数有2个字节,但我找不到转换它的方法。

#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main() {
     uint8_t ipv6[16],direccionIP[] = {193, 110, 128, 200};
     ipv6 = &direccionIP; //this doesn't work, and I don't come up with any method
     printf("%u", ipv6);
     return 0;
}

2 个答案:

答案 0 :(得分:1)

正如其他人所说,没有直接映射到/来自ipv4 / ipv6。但是,有许多方法可以映射到/从ipv4 / ipv6,例如6到4,teredo和其他。

对于大多数情况,转换后的IPv4地址位于16字节IPv6地址的低4字节中,IPv6地址的其余部分有一系列表示映射的字节。

答案 1 :(得分:0)

IPv4和IPv6是具有不同地址的不同协议。通常,您无法在IPv4和IPv6地址之间进行转换。