【问题标题】:How do I manually transform an IPv4 address into an IPv6 address?如何手动将 IPv4 地址转换为 IPv6 地址?
【发布时间】:2025-09-29 02:35:02
【问题描述】:

我想知道是否有任何手动方法可以在不使用转换计算器或工具的情况下将 IPv4 地址转换为 IPv6 地址。例如:

我有一个 IPv4 地址,它是这样给出的:

129.130.100.11

当它被转换时,答案是:

0::FFFF:8182:640B

是否有任何公式用于执行这种转换?

任何帮助都会很好。

【问题讨论】:

    标签: ipv6 ipv4 subnet


    【解决方案1】:

    对于 IPv6,八位字节通常表示为十六进制数字,而 IPv4 使用十进制。所以,一个极其简化的方法是首先将每个十进制八位字节(8 位)转换为十六进制:

    129 becomes 81
    130 becomes 82
    100 becomes 64
    11 becomes 0B
    

    然后在前两个和后两个八位字节之间用冒号连接结果:

    8182:640B
    

    并在字符串前面加上::FFFF:

    ::FFFF:8182:640B
    

    然而,IPv6 地址有几种不同的格式。我在上面省略了这些,因为您可以看到它们都包含某种类型的十进制 - 十六进制转换和一些简单的字符串格式。其他选择包括:

    • 6 到 4 个地址
      • 2002:8182:640B:0:0:0:0:0
      • 2002:8182:640B::
    • IPv4 映射 地址:
      • 0:0:0:0:0:FFFF:129.130.100.11
      • ::FFFF:129.130.100.11
      • ::FFFF:8182:640B
    • IPv4 兼容性 地址:
      • 0:0:0:0:0:0:129.130.100.11
      • ::129.130.100.11
      • ::8182:640B

    【讨论】:

    • IPv4 兼容 IPv6 地址自 2006 年起已弃用 (RFC 4291)。你可以忽略它们。
    【解决方案2】:

    虽然另一个答案也是正确的,但有效的 IPv6 地址也可能以十进制 rts 结尾,正是为了提供这种东西。

    你可以写

    ::FFFF:129.130.100.11
    

    你就完成了。

    【讨论】:

    • 谢谢,为简洁起见将其省略,但已更新我的答案以包含其他可能的格式。