如果将2130706433 与127.0.0.1两者进行互换

eshen2002 2005-04-18 09:50:10
如题:2130706433 是一个无符号整数。后面是一个IP地址形式,现在要将这两者进行相互转换,急
...全文
1086 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
eshen2002 2005-04-20
  • 打赏
  • 举报
回复
在此给出我自己将IP转换成无符号数的傻办法。旨在抛砖玉,期望更简单的方法。
byte []ia = InetAddress.getByName("127.0.0.1").getAddress();
System.err.println(ia[0]<0 ? ((long)(Math.abs(129+ia[0]) << 24)+(127<<24)) : ia[0]<<24);
System.err.println(ia[1]<0 ? ((long)(Math.abs(129+ia[1]) << 16)+(127<<16)) : ia[1]<<16);
System.err.println(ia[2]<0 ? ((long)(Math.abs(129+ia[2]) << 8)+(127<<8)) : ia[2]<<8);
System.err.println(ia[3]);
hongyan2004 2005-04-20
  • 打赏
  • 举报
回复
受益非浅
shan1119 2005-04-19
  • 打赏
  • 举报
回复
嘿嘿,copy卡卡西:
// int i = 0;
// byte b[] = {127,0,0,1};
// i = i|1;
// i = i|0<<8;
// i = i|0<<16;
// i = i|127<<24;
// System.out.println(i);

int i = 0;
byte b[] = {192-255,168-255,0,2};
i = i|1;
i = i|0<<8;
i = i|0<<16;
i = i|127<<24;
System.out.println(i);
tuxw 2005-04-19
  • 打赏
  • 举报
回复
steedhorse(晨星) 兄,你好

一年多没有到 CSDN 来了,以前到 C、VC 去得比较多,受过你不少帮助啊,现在因为想学 JAVA 又回来了,想不到还能看到这么熟悉的马甲,有种回家的感觉
eshen2002 2005-04-19
  • 打赏
  • 举报
回复
各位高人帮小弟看看。
jFresH_MaN 2005-04-19
  • 打赏
  • 举报
回复
long i=3232235522L;
byte []b=new byte[4];
b[3]=(byte)(i&0xff);
b[2]=(byte)(i>>8&0xff);
b[1]=(byte)(i>>16&0xff);
b[0]=(byte)(i>>24&0xff);
for(int k=0;k<b.length;k++) {
System.out.print((b[k]<0?b[k]+256:b[k])+(k!=b.length?".":"");
}
测试通过,可以处理大于127的数值
原理就是大于127的byte会做补码处理,得到的就是一个负数
那么我判断如果这个byte是负数,就加256得到原来的数,同时也转成int来处理
jFresH_MaN 2005-04-19
  • 打赏
  • 举报
回复
我想说的是将127.0.0.1如何转换成2130706433这个无符号数。
这个也简单啊,由字符串得到InetAddress对象
然后getAddress()得到byte[]
再使用上面的逆过程得到一个long型。

大于127的值倒是没有注意处理,我再想象
eshen2002 2005-04-19
  • 打赏
  • 举报
回复
THX,jFresH_MaN(TM)和楼上的老兄 。我想说的是将127.0.0.1如何转换成2130706433这个无符号数。另外byte类型的最大值是127,如果IP地址大于这个数的话,上面的程序就不正确。
eshen2002 2005-04-19
  • 打赏
  • 举报
回复
楼上的方法在数字不超过127时是对的,但是如果数字大于127的话好像不能将IP转换为无符号数。
faen 2005-04-18
  • 打赏
  • 举报
回复
不过听佩服jFresH_MaN(TM)老兄的,什么都会
jFresH_MaN 2005-04-18
  • 打赏
  • 举报
回复
127.0.0.1转换都没有问题,其他ip地址肯定都没有问题啊

有没有将IP地址转换过来的呢?
----
你的意思是不是把String转换成InetAddress类对象?
InetAddress ip=InetAddress.getByName("127.0.0.1");

oracle不清楚
eshen2002 2005-04-18
  • 打赏
  • 举报
回复
另:在mysql里有inet_ntoa/inet_aton函数进行转换,不知道oracle里有没有对应的函数。
eshen2002 2005-04-18
  • 打赏
  • 举报
回复
谢谢楼上的各位!我在测试程序时将3232235522(192.168.0.2)进行测试,好象结果不对。
另外,楼上给的是转化成IP地址的,有没有将IP地址转换过来的呢?
jFresH_MaN 2005-04-18
  • 打赏
  • 举报
回复
呵呵,楼上的夸张了
晨星 2005-04-18
  • 打赏
  • 举报
回复
jFresH_MaN(TM)兄弟的速度,任何人都寒。^0^
faen 2005-04-18
  • 打赏
  • 举报
回复
我考,每次都慢一点 :(
faen 2005-04-18
  • 打赏
  • 举报
回复

public class A
{
public static void main(String [] args)
{
long t=2130706433;
byte c=127;
byte a[]=new byte[4];
a[3]=(byte)(t&c);
a[2]=(byte)((t>>8)&c);
a[1]=(byte)((t>>16)&c);
a[0]=(byte)((t>>24)&c);
for(int i=0;i<4;i++)
{
if(i!=3)
System.out.print(a[i]+".");
else
System.out.print(a[i]);
}
}
}
jFresH_MaN 2005-04-18
  • 打赏
  • 举报
回复
int i=2130706433 ;
byte []b=new byte[4];
b[3]=(byte)(i&0xff);
b[2]=(byte)(i>>8&0xff);
b[1]=(byte)(i>>16&0xff);
b[0]=(byte)(i>>24&0xff);

System.out.println(InetAddress.getByAddress(b).getHostAddress());
测试通过

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧