首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将IPV6地址转换为IPV4地址?

如何将IPV6地址转换为IPV4地址?
EN

Stack Overflow用户
提问于 2010-05-07 14:29:16
回答 5查看 172.9K关注 0票数 16

我有一个使用IPv4地址的应用程序(它将它们存储得很长),所以它只理解IPv4地址。

有没有可能用Java把IPv6地址转换成IPv4?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-05-07 14:33:47

当使用there are IPv6 equivalents for the IPv4 address range时,你不能把所有的IPv6地址都转换成IPv4 -- IPv6地址比IPv4地址多。

解决这个问题的唯一明智的方法是更新您的应用程序,使其能够理解和存储IPv6地址。

票数 23
EN

Stack Overflow用户

发布于 2016-09-07 21:46:54

The IPAddress Java library可以完成您在这里描述的内容。

IPv6地址为16个字节。使用该库,如果您从16字节数组开始,则可以构造IPv6 address对象:

代码语言:javascript
运行
复制
IPv6Address addr = new IPv6Address(bytes); //bytes is byte[16]

从那里您可以检查地址是否是IPv4映射的、IPv4兼容的、IPv4转换的,等等( IPv6表示IPv4地址的方式有很多种)。在大多数情况下,如果IPv6地址表示IPv4地址,则ipv4地址位于较低的4个字节中,因此您可以按如下方式获得派生IPv4地址。然后,您可以将其转换回字节,对于IPv4,这将只是4个字节。

代码语言:javascript
运行
复制
    if(addr.isIPv4Compatible() || addr.isIPv4Mapped()) {
        IPv4Address derivedIpv4Address = addr.getEmbeddedIPv4Address();
        byte ipv4Bytes[] = derivedIpv4Address.getBytes();
        ...
     }

链接中提供了javadoc。

票数 8
EN

Stack Overflow用户

发布于 2014-04-18 13:14:57

这是你在javascript中寻找的代码。你知道你不能转换所有的ipv6地址

代码语言:javascript
运行
复制
<script>
function parseIp6(str)
{
  //init
  var ar=new Array;
  for(var i=0;i<8;i++)ar[i]=0;
  //check for trivial IPs
  if(str=="::")return ar;
  //parse
  var sar=str.split(':');
  var slen=sar.length;
  if(slen>8)slen=8;
  var j=0;
  for(var i=0;i<slen;i++){
    //this is a "::", switch to end-run mode
    if(i && sar[i]==""){j=9-slen+i;continue;}
    ar[j]=parseInt("0x0"+sar[i]);
    j++;
  }

  return ar;
}
function ipcnvfrom6(ip6)
{
  var ip6=parseIp6(ip6);
  var ip4=(ip6[6]>>8)+"."+(ip6[6]&0xff)+"."+(ip6[7]>>8)+"."+(ip6[7]&0xff);
  return ip4;
}
alert(ipcnvfrom6("::C0A8:4A07"));
</script>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2786632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档