我经常会有吧IP/Gateway/Mask/DNS这些IP地址信息转换为十进制的;
就像这么这样的
192.168.100.200 IP地址
3232261320 十进制
我之前都是手动打开计算器;然后一个一个计算
IP地址: 192.168.100.200
十六进制:C0 A8 64 C8
然后将C0A864C8转换回十进制3232261320
当然我们也可以这样来计算
IP地址:192.168.100.200
1. 192*16777216 =3221225472
2. 168*65536=11010048
3. 100*256=256000
4. 200*1=200
5. 上面加起来=3232261320
写一个控制台获取用户输入IP地址的函数
func InputIp() {
var str string
fmt.Printf("请输入IP/Mask/Geteway/DNS: ")
fmt.Scanf("%s", &str;)
fmt.Println("你输入的IP地址:", str)
x := strings.Split(str, ".")
//b0, _ := strconv.Atoi(x[0]) //字符串转int型
b0, _ := strconv.ParseInt(x[0], 10, 0) //字符串转Int64型
b1, _ := strconv.ParseInt(x[1], 10, 0)
b2, _ := strconv.ParseInt(x[2], 10, 0)
b3, _ := strconv.ParseInt(x[3], 10, 0)
CalculateIp(b0, b1, b2, b3)
}
1. 这个代码就是在控制台提示用户输入IP地址;
2. 然后用Split进行切割;
3. 然后用x[0]这样来去IP地址的4个部分
4. 接着吧转换为int64类型
在写一个吧IP转换成十进制的函数
func CalculateIp(b0, b1, b2, b3 int64) {
/*
*用于将IP地址转换成10进制
*需要分别输入IP地址的4段内容
*由于计算之后的数字很大所以需要用到int64类型
*分别计算IP地址的4段;然后相加即可
*/
number0 := b0 * 16777216 //256*256*256
number1 := b1 * 65536 //256*256
number2 := b2 * 256
number3 := b3 * 1
sum := number0 + number1 + number2 + number3
fmt.Println("转换之后的十进制IP地址:", sum)
}
1. 上面的代码就更简单了;
2. 吧4段IP地址分别计算;然后相加即可