欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式

 更新時間:2023年11月22日 14:54:27   作者:風神韻  
這篇文章主要介紹了Golang IPv4 字符串與整數(shù)互轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1. 字符串轉(zhuǎn)整數(shù)

第一步:

  • 是使用 net.ParseIP 判斷字符串是否是合法的 IPv4 地址。
  • 如果合法,net.ParseIP 會將其轉(zhuǎn)換成字符數(shù)組([]byte)。

第二步:

  • 是使用 binary.Read 方法將上面的字符數(shù)組以大端對齊的方式寫入 ret 變量中。
func InetAddr(ipaddr string) uint32 {
	var ret uint32
 
	ip := net.ParseIP(ipaddr)
	if ip == nil {
		return 0
	}
 
	if err := binary.Read(bytes.NewBuffer(ip.To4()), binary.BigEndian, &ret); err != nil {
		return 0
	}
 
	return ret
}

2. 整數(shù)轉(zhuǎn)字符串

整數(shù)轉(zhuǎn)字符串比較簡單,

以一個例子來演示:

有 IPv4 地址十六進制整數(shù)表示形式為 0x01020304,將其分別移位24、16、8、0后,

會得到 IP 地址字符串表示形式的 4 段:

byte(0x01020304 >> 24) = byte(0x01)           = 1

byte(0x01020304 >> 16) = byte(0x0102)       = 2

byte(0x01020304 >> 8) = byte(0x010203)     = 3

byte(0x01020304 >> 0) = byte(0x01020304) = 4

將這四個值用 . 拼接后,即可得到字符串表式:1.2.3.4

func IPv4Uint32ToString(ip uint32) string {
    return fmt.Sprintf("%d.%d.%d.%d", byte(ip>>24), byte(ip>>16), byte(ip>>8), byte(ip))
}

注意:

byte 在強制轉(zhuǎn)換大于其存儲最大值時(0xff)時會溢出,會將左邊部分丟棄。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Go語言中rune方法使用詳解

    Go語言中rune方法使用詳解

    本文主要介紹了Go語言中rune方法使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Go語言實現(xiàn)常用排序算法的示例代碼

    Go語言實現(xiàn)常用排序算法的示例代碼

    排序算法是在生活中隨處可見,也是算法基礎(chǔ),因為其實現(xiàn)代碼較短,應(yīng)用較常見。所以在面試中經(jīng)常會問到排序算法及其相關(guān)的問題。本文為大家整理了一些Go語言中常用排序算法的實現(xiàn),需要的可以參考一下
    2022-08-08
  • golang反向代理設(shè)置host不生效的問題解決

    golang反向代理設(shè)置host不生效的問題解決

    在使用golang的httputil做反向代理的時候,發(fā)現(xiàn)一個奇怪的現(xiàn)象,上游網(wǎng)關(guān)必須要設(shè)置host才行,不設(shè)置host的話,golang服務(wù)反向代理請求下游會出現(xiàn)http 503錯誤,接下來通過本文給大家介紹golang反向代理設(shè)置host不生效問題,感興趣的朋友一起看看吧
    2023-05-05
  • golang mapstructure庫的具體使用

    golang mapstructure庫的具體使用

    mapstructure用于將通用的map[string]interface{}解碼到對應(yīng)的 Go 結(jié)構(gòu)體中,或者執(zhí)行相反的操作,本文主要介紹了golang mapstructure庫的具體使用,感興趣的可以了解一下
    2023-09-09
  • golang將多路復(fù)異步io轉(zhuǎn)成阻塞io的方法詳解

    golang將多路復(fù)異步io轉(zhuǎn)成阻塞io的方法詳解

    常見的IO模型有阻塞、非阻塞、IO多路復(fù)用,異,下面這篇文章主要給大家介紹了關(guān)于golang將多路復(fù)異步io轉(zhuǎn)成阻塞io的方法,文中給出了詳細的示例代碼,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • go語言LeetCode題解720詞典中最長的單詞

    go語言LeetCode題解720詞典中最長的單詞

    這篇文章主要為大家介紹了go語言LeetCode題解720詞典中最長的單詞,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Go語言如何利用Mutex保障數(shù)據(jù)讀寫正確

    Go語言如何利用Mutex保障數(shù)據(jù)讀寫正確

    這篇文章主要介紹了互斥鎖的實現(xiàn)機制,以及?Go?標準庫的互斥鎖?Mutex?的基本使用方法,文中的示例代碼講解詳細,需要的小伙伴可以參考一下
    2023-05-05
  • GoLang channel底層代碼實現(xiàn)詳解

    GoLang channel底層代碼實現(xiàn)詳解

    Channel和goroutine的結(jié)合是Go并發(fā)編程的大殺器。而Channel的實際應(yīng)用也經(jīng)常讓人眼前一亮,通過與select,cancel,timer等結(jié)合,它能實現(xiàn)各種各樣的功能。接下來,我們就要梳理一下GoLang channel底層代碼實現(xiàn)
    2022-10-10
  • Go Map并發(fā)沖突預(yù)防與解決

    Go Map并發(fā)沖突預(yù)防與解決

    這篇文章主要為大家介紹了Go Map并發(fā)沖突預(yù)防與解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 基于Go語言實現(xiàn)插入排序算法及優(yōu)化

    基于Go語言實現(xiàn)插入排序算法及優(yōu)化

    插入排序是一種簡單的排序算法。這篇文章將利用Go語言實現(xiàn)冒泡排序算法,文中的示例代碼講解詳細,對學(xué)習(xí)Go語言有一定的幫助,需要的可以參考一下
    2022-12-12

最新評論