亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Golang10進制轉16進制的幾種方法代碼示例

 更新時間:2023年07月10日 09:18:52   作者:風之涯角  
這篇文章主要給大家介紹了關于Golang10進制轉16進制的幾種方法,進制轉換是Golang的一些基本操作,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下

對Golang10進制轉16進制的幾種方法做了一些總結,一切盡在代碼中:

func main() {
    // 以下為10進制轉16進制的幾種方式:
    //1 手擼
    hex := toHex(di)
    //2 內(nèi)置的string工具包
    hex1 := strconv.FormatInt(int64(di), 16)
    //3 format 提供的方法
    hex2 := fmt.Sprintf("%x", di)
}

如果僅是找工具的看客,看到這里就可以止步了,以下內(nèi)容純屬自娛:

/**
循環(huán)右移4位(一個16進制數(shù)),取下標,拼接成字符串,
右移過程中,先取低位,因此拼接過程需要對結果做反轉。
給出的兩種實現(xiàn)區(qū)別僅在于反轉的方式不同:
1.先循環(huán)一次,找到轉換后16進制數(shù)的長度,拼接時從后往前。(長得有點難看)
2.直接用切片間的 append 反向拼接(每次構建新的切片,占用較多空間)
*/
// scheme 1:
func toHex0(di int) string {
    index := 0
    var o = di
    for o >= 16 {
        index++
        o >>= 4
    }
    ret := make([]byte, index+1)
    var i = 0
    digits := "0123456789abcdefx"
    for di >= 16 {
        ret[index-i] = digits[di&0xF]
        i++
        di >>= 4
    }
    ret[0] = digits[di&0xF]
    return string(ret)
}
 
// scheme 2:
func toHex(di int) string {
    ret := make([]byte, 0)
    digits := "0123456789abcdefx"
    for di >= 16 {
        //從低位往高位取,直接使用切片append 單個元素,結果是倒序的
        temp := []byte{digits[di&0xF]}
        temp = append(temp, ret...)
        ret = temp
        di >>= 4
    }
    // 最高位在循環(huán)外,單獨取
    temp := []byte{digits[di&0xF]}
    return string(append(temp, ret...))
}

基于以上原理,可以寫一個32進制下的通用轉換:

func toBelow32(di int, base int) string {
    upperstr := "0123456789abcdefghijklmnopqrstuv"
    substr := upperstr[0:base]
    ret := make([]byte, 0)
    mol := base - 1
    mov := math.Log2(float64(base))
    for di >= base {
        temp := []byte{substr[di&mol]}
        temp = append(temp, ret...)
        ret = temp
        di >>= int(mov)
    }
    temp := []byte{substr[di&mol]}
    return string(append(temp, ret...))
}
//eg:toBelow32(anynum,16)

注意:該方法基于循環(huán)右移實現(xiàn),只適用10到2的n次冪(2,4,8,16,32)進制的轉換。

補充:意外發(fā)現(xiàn)golang math 包下提供了log函數(shù),方法1 可以更優(yōu)雅的實現(xiàn):

func toHex0(di int) string {
    index := int(math.Log2(float64(math.Log2(float64(di)))))
    ret := make([]byte, index+1)
    var i = 0
    digits := "0123456789abcdefx"
    for di >= 16 {
        ret[index-i] = digits[di&0xF]
        i++
        di >>= 4
    }
    ret[0] = digits[di&0xF]
    return string(ret)
}

附:Golang:十進制切片數(shù)組轉換為16進制字符串

//十進制切片數(shù)組轉換為16進制字符串
import (
    "fmt"
    "strings"
)
func Tool_DecimalByteSlice2HexString(DecimalSlice []byte) string {
    var sa = make([]string, 0)
    for _, v := range DecimalSlice {
        sa = append(sa, fmt.Sprintf("%02X", v))
    }
    ss := strings.Join(sa, "")
    return ss
}

總結

到此這篇關于Golang10進制轉16進制的幾種方法的文章就介紹到這了,更多相關Golang10進制轉16進制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • GO語言利用K近鄰算法實現(xiàn)小說鑒黃

    GO語言利用K近鄰算法實現(xiàn)小說鑒黃

    本文給大家分享的是一段GO語言利用K近鄰算法實現(xiàn)小說鑒黃的方法,本方法的鑒別的關鍵是關鍵是向量點的選擇和閾值的判定,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • Go語言入門教程之Arrays、Slices、Maps、Range操作簡明總結

    Go語言入門教程之Arrays、Slices、Maps、Range操作簡明總結

    這篇文章主要介紹了Go語言入門教程之Arrays、Slices、Maps、Range操作簡明總結,本文直接給出操作代碼,同時對代碼加上了詳細注釋,需要的朋友可以參考下
    2014-11-11
  • docker中部署golang項目的步驟詳解

    docker中部署golang項目的步驟詳解

    這篇文章主要給大家介紹了關于在docker中部署golang項目的步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • Golang開發(fā)Go依賴管理工具dep安裝驗證實現(xiàn)過程

    Golang開發(fā)Go依賴管理工具dep安裝驗證實現(xiàn)過程

    這篇文章主要為大家介紹了Golang開發(fā)Go依賴管理工具dep安裝驗證及初始化一系列實現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • Go語言中iota的具體使用

    Go語言中iota的具體使用

    Go語言中,iota是一個用于生成一系列相關常量值的常量生成器,常應用于枚舉、位操作等場景,廣泛用于定義HTTP狀態(tài)碼、權限控制等,本文就來介紹一下iota的具體使用,感興趣的可以了解一下
    2024-11-11
  • 詳解Golang中單元測試的使用

    詳解Golang中單元測試的使用

    單元測試是檢測你寫的一個函數(shù)是否具備安全性的一次檢測,這篇文章主要為大家詳細介紹了Golang中單元測試的具體使用,希望對大家有所幫助
    2023-07-07
  • golang atomic原子操作示例詳解

    golang atomic原子操作示例詳解

    這篇文章主要為大家介紹了golang atomic原子操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Go+Gin實現(xiàn)安全多文件上傳功能

    Go+Gin實現(xiàn)安全多文件上傳功能

    這篇文章主要為大家詳細介紹了Go如何利用Gin框架實現(xiàn)安全多文件上傳功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-04-04
  • go語言基礎教程之(包、變量和函數(shù))

    go語言基礎教程之(包、變量和函數(shù))

    這篇文章主要介紹了go語言基礎教程之(包、變量和函數(shù))的相關資料,需要的朋友可以參考下
    2023-07-07
  • Go語言從單體服務到微服務設計方案詳解

    Go語言從單體服務到微服務設計方案詳解

    這篇文章主要為大家介紹了Go語言從單體服務到微服務設計方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論