首页 - 科技 > 如何将参数转换为long类型,如何将一个字符串形式的IP地址转化为long型的数据

如何将参数转换为long类型,如何将一个字符串形式的IP地址转化为long型的数据

发布于:2024-04-13 作者:nyajiajiao.cz 阅读:8

一、在C++中如何编出一个函数将整型数转化为字符串形式输出

把一个带符号的整数转换为一个ASCII字符串。

数字字符的ASCII值有什么特点呢?它们是颠倒顺序排列的;字符”0”的ASCII值加上1等于”1”的ASCII值,以此类推。因此,数字字符的ASCII就等于这个数字加上字符”0”的ASCII值。(注意,字符”0”的ASCII值是一个不等于零的数值,而这个数值代表着字符”0”。)也就是说,只要用数字字符的ASCII值减去字符”0”的ASCII值就能得到该数字的整数表示形式。也许我不知道字符”0”的ASCII值是多少,但是编译器知道,只要写出代码”–‘0’”,编译器就会把它解释为”减去字符串’0’的ASCII值”。反过来,数字加上字符”0”的ASCII值就应该得到与之对应的数字字符(也就是把数字转为字符)了。

#define MAX_DIGITS_INT 10/*整数位数*/

void IntToStr( int num,char str[])

{

int i= 0, j= 0;

int isNeg= 0;

/*整数位数最大为12位,包括负号*/

char temp[MAX_DIGITS_INT+ 2];

if( num<0)

{

num*=-1;

isNeg= 1;

}

do

{

temp[i++]=(num%10)+'0';

num/= 10;

}while(num);

if( isNeg)

temp[i++]='-1';

while(i>0)

str[j++]= temp[--i];

str[j]='\0';

}

二、c******如何将一个字符串形式的IP地址转化为long型的数据

将一个Ip地址转换成整形

//接受一个String类型的一个参数,将其转化成一个long类型的

//暂时转化String类型的IP地址

public long ipToLong(String ip){

String[] ips= ip.split("//.");

StringBuffer strip= new StringBuffer();

for(int i=0;i<ips.length;i++){

strip.append(ips[i]);

}

return Long.parseLong(strip.toString());

}

当发生 192.168.12.1和192.168.1.21的时候用上面的那种转换的话,结果是相同的:192168121

所以有下面两种方式:

第一种:

id分为四段,每段不够3位的话,加零如:192.168.12.1和192.168.1.21,结果是:192168012001和192168001021

code:

package com.text.dos;

import org.omg.PortableInterceptor.DISCARDING;

public class Test{

/**

*@param args

*/

public static void main(String[] args){

// TODO自动生成方法存根

String s="192.168.1.12";

long j= doString(s);

System.out.println(j);

}

private static long doString(String idString)

{

long i= 0;

int a1= idString.indexOf(".");

int a2= idString.indexOf(".",a1+1);

int a3= idString.indexOf(".",a2+1);

String s1= idString.substring(0,a1);

String s2= idString.substring(a1+1,a2);

String s3= idString.substring(a2+1, a3);

String s4= idString.substring(a3+1,idString.length());

//System.out.println(s4);

if(s1.length()==1)

s1="00"+s1;

else if(s1.length()==2){

s1="0"+s1;

}

System.out.println(s1);

if(s2.length()==1)

s2="00"+s2;

else if(s2.length()==2){

s2="0"+s2;

}

System.out.println(s2);

if(s3.length()==1)

s3="00"+s3;

else if(s3.length()==2){

s3="0"+s3;

}

if(s4.length()==1)

s4="00"+s4;

else if(s4.length()==2){

s4="0"+s4;

}

System.out.println(s3);

String s= s1+s2+s3+s4;

i= Long.parseLong(s);

return i;

}

}

第二种:

一、应用范围

一般用在登录限制、查找IP所在城市等需求中,windows的ping命令也支持整数形式的IP。

二、关键技术点

将IP地址转化成整数的方法如下:

1、通过String的indexOf方法找出IP字符串中的点"."的位置。

2、根据点的位置,使用String的substring方法把IP字符串分成4段。

3、使用Long的parseLong方法把子段转化成一个3位整数。

4、通过左移位操作(<<)给每一段的数字加权,第一段的权为2的24次方,第二段的权为2的16次方,第三段的权为2的8次方,最后一段的权为1

将整数形式的IP地址转化成字符串的方法如下:

1、将整数值进行右移位操作(>>>),右移24位,右移时高位补0,得到的数字即为第一段IP。

2、通过与操作符(&)将整数值的高8位设为0,再右移16位,得到的数字即为第二段IP。

3、通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。

4、通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。

三、实例演示

public class IP2Long...{

//将127.0.0.1形式的IP地址转换成十进制整数,这里没有进行任何错误处理

public static long ipToLong(String strIp)...{

long[] ip= new long[4];

//先找到IP地址字符串中.的位置

int position1= strIp.indexOf(".");

int position2= strIp.indexOf(".", position1+ 1);

int position3= strIp.indexOf(".", position2+ 1);

//将每个.之间的字符串转换成整型

ip[0]= Long.parseLong(strIp.substring(0, position1));

ip[1]= Long.parseLong(strIp.substring(position1+1, position2));

ip[2]= Long.parseLong(strIp.substring(position2+1, position3));

ip[3]= Long.parseLong(strIp.substring(position3+1));

return(ip[0]<< 24)+(ip[1]<< 16)+(ip[2]<< 8)+ ip[3];

}

//将十进制整数形式转换成127.0.0.1形式的ip地址

public static String longToIP(long longIp)...{

StringBuffer sb= new StringBuffer("");

//直接右移24位

sb.append(String.valueOf((longIp>>> 24)));

sb.append(".");

//将高8位置0,然后右移16位

sb.append(String.valueOf((longIp& 0x00FFFFFF)>>> 16));

sb.append(".");

//将高16位置0,然后右移8位

sb.append(String.valueOf((longIp& 0x0000FFFF)>>> 8));

sb.append(".");

//将高24位置0

sb.append(String.valueOf((longIp& 0x000000FF)));

return sb.toString();

}

/***//**

*@param args

*/

public static void main(String[] args)...{

String ipStr="192.168.0.1";

long longIp= IP2Long.ipToLong(ipStr);

System.out.println("192.168.0.1的整数形式为:"+ longIp);

System.out.println("整数"+ longIp+"转化成字符串IP地址:"

+ IP2Long.longToIP(longIp));

//ip地址转化成二进制形式输出

System.out.println("192.168.0.1的二进制形式为:"+ Long.toBinaryString(longIp));

}

}

三、c#中类型如何强制转换

方法:

1、int适合简单数据类型之间的转换,C#的默认整型是int32(不支持bool型);

2、int.Parse(stringsParameter)是个静态方法,参数类型只支持string类型;

3、Convert.ToInt32()适合将Object类型转换为int型;

4、Convert.ToInt32()和int.Parse()的细微差别:

对于空值(null)的处理不同,Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。

扩展资料:

自动类型转换:

在C语言中,自动类型转换遵循以下规则:

1、若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

2、转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。

a、若两种类型的字节数不同,转换成字节数高的类型

b、若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型

3、所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

4、char型和short型(在visualc++等环境下)参与运算时,必须先转换成int型。

5、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分直接舍去。

参考资料:百度百科-强制类型转换

二维码

扫一扫关注我们

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件至 465747283@qq.com举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关文章

自定义链接1

电话咨询
自定义链接2