Rumah  >  Artikel  >  pembangunan bahagian belakang  >  golang ip ke int

golang ip ke int

WBOY
WBOYasal
2023-05-13 09:44:361138semak imbas

Dalam banyak program rangkaian komputer, kita selalunya perlu berurusan dengan alamat IP. Jika anda menulis aplikasi web menggunakan Golang, maka anda perlu tahu cara menukar alamat IP kepada integer. Dalam artikel ini, kami akan menunjukkan cara menukar alamat IP kepada integer menggunakan Golang.

Alamat IP

Alamat IP ialah pengecam unik yang diberikan kepada peranti mengikut peruntukan standard Protokol Internet. Alamat IP terdiri daripada nombor binari 32-bit, biasanya diwakili oleh empat digit perpuluhan, dengan setiap nombor dipisahkan oleh "." Sebagai contoh, 192.168.0.1 ialah alamat IP biasa.

Dalam rangkaian komputer, alamat IP memainkan peranan penting dalam penghantaran data. Melalui alamat IP, kami boleh menentukan lokasi fizikal peranti dan menghantar mesej ke peranti yang betul.

Alamat IP di Golang

Di Golang, alamat IP dilaksanakan dalam pakej net. Khususnya, jenis net.IP ialah struktur yang mewakili alamat IP. Struktur ini mempunyai satu siri kaedah dan fungsi yang membolehkan kami memproses dan mengendalikan alamat IP.

Sebagai contoh, kita boleh menggunakan fungsi net.ParseIP() untuk menukar alamat IP yang diwakili oleh rentetan kepada contoh net.IP. Berikut ialah contoh mudah:

import (
    "fmt"
    "net"
)

func main() {
    ipStr := "192.168.0.1"
    ip := net.ParseIP(ipStr)
    fmt.Println(ip)
}

Di sini, kami memanggil fungsi net.ParseIP() untuk menukar rentetan alamat IP kepada contoh net.IP. Apabila program berjalan, kita akan melihat output berikut:

192.168.0.1

Tukar alamat IP kepada integer

Sekarang kita tahu bagaimana untuk mewakili alamat IP di Golang. Seterusnya, mari kita lihat cara menukar alamat IP kepada integer.

Proses menukar alamat IP kepada integer boleh digambarkan secara ringkas sebagai: menukar empat segmen alamat IP kepada perenambelasan dan kemudian menggabungkannya menjadi integer.

Kita boleh menggunakan kaedah jenis net.IP untuk melaksanakan proses ini. Secara khusus, net.IP mentakrifkan kaedah To4() yang menukar alamat IP kepada kepingan bait panjang 4. Setiap elemen kepingan bait ini mewakili segmen alamat IP.

Selepas mendapat kepingan bait ini, kami menggunakan operator bit dan operator anjakan untuk menukar setiap segmen kepada nombor perenambelasan, dan kemudian menggabungkan nombor yang dikodkan heksadesimal ini ke dalam integer. Berikut ialah contoh program:

import (
    "fmt"
    "net"
)

func IpToInt(ip net.IP) uint32 {
    ip = ip.To4()
    return uint32(ip[0])<<24 | uint32(ip[1])<<16 | uint32(ip[2])<<8 | uint32(ip[3])
}

func main() {
    ipStr := "192.168.0.1"
    ip := net.ParseIP(ipStr)
    fmt.Printf("%11s: %x
", "IP Address", ip)
    fmt.Printf("%11s: %d
", "Integer", IpToInt(ip))
}

Dalam contoh program ini, kami mentakrifkan fungsi IpToInt() yang menukar alamat IP yang diluluskan kepada integer dan mengembalikannya. Fungsi ini mula-mula mengekstrak kepingan panjang-4 bait daripada objek To4() menggunakan kaedah net.IP. Nilai dalam bait kemudiannya digabungkan menggunakan operator anjakan untuk membentuk integer, dan integer itu dikembalikan. main() Fungsi Gunakan fungsi ini untuk menukar alamat IP 192.168.0.1 kepada integer dan mencetak hasilnya. Outputnya adalah seperti berikut:

  IP Address: c0a80001
     Integer: 3232235521

Di sini, c0a80001 ialah perwakilan heksadesimal bagi alamat IP dan 3232235521 ialah integer yang alamat IP ditukar.

Ringkasan

Dalam artikel ini, kami memperkenalkan cara menukar alamat IP kepada integer menggunakan Golang. Kami melaksanakan fungsi ini menggunakan kaedah taip net.IP dan tunjukkan contoh kod tertentu. Saya harap artikel ini berguna kepada anda, terima kasih kerana membaca!

Atas ialah kandungan terperinci golang ip ke int. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn