簡體   English   中英

在 C 上將 IPv4 轉換為 IPv6

[英]Convert IPv4 into IPv6 on C

我正在嘗試使用一些到 uint8_t 的轉換將 IPv4 轉換為 IPv6。 我知道 IPv4 有 4 個字節,而 IPv6 有 2 個字節的 16 個無符號整數,但我找不到進行它們轉換的方法。

#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;
}

正如其他人所說,沒有直接映射到/從 ipv4/ipv6。 但是,有多種映射到/從 ipv4/ipv6 的方法,例如 6 到 4、teredo 等。

大多數情況下,轉換后的 IPv4 地址放置在 16 字節 IPv6 地址的低 4 個字節中,IPv6 地址的其余部分有一系列指示映射的字節。

IPv4 和 IPv6 是具有不同地址的不同協議。 通常,您無法在 IPv4 和 IPv6 地址之間進行轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM