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

Golang10進(jìn)制轉(zhuǎn)16進(jìn)制的幾種方法代碼示例

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

對(duì)Golang10進(jìn)制轉(zhuǎn)16進(jìn)制的幾種方法做了一些總結(jié),一切盡在代碼中:

func main() {
    // 以下為10進(jìn)制轉(zhuǎn)16進(jìn)制的幾種方式:
    //1 手?jǐn)]
    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位(一個(gè)16進(jìn)制數(shù)),取下標(biāo),拼接成字符串,
右移過程中,先取低位,因此拼接過程需要對(duì)結(jié)果做反轉(zhuǎn)。
給出的兩種實(shí)現(xiàn)區(qū)別僅在于反轉(zhuǎn)的方式不同:
1.先循環(huán)一次,找到轉(zhuǎn)換后16進(jìn)制數(shù)的長度,拼接時(shí)從后往前。(長得有點(diǎn)難看)
2.直接用切片間的 append 反向拼接(每次構(gòu)建新的切片,占用較多空間)
*/
// 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 單個(gè)元素,結(jié)果是倒序的
        temp := []byte{digits[di&0xF]}
        temp = append(temp, ret...)
        ret = temp
        di >>= 4
    }
    // 最高位在循環(huán)外,單獨(dú)取
    temp := []byte{digits[di&0xF]}
    return string(append(temp, ret...))
}

基于以上原理,可以寫一個(gè)32進(jìn)制下的通用轉(zhuǎn)換:

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)右移實(shí)現(xiàn),只適用10到2的n次冪(2,4,8,16,32)進(jìn)制的轉(zhuǎn)換。

補(bǔ)充:意外發(fā)現(xiàn)golang math 包下提供了log函數(shù),方法1 可以更優(yōu)雅的實(shí)現(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:十進(jìn)制切片數(shù)組轉(zhuǎn)換為16進(jìn)制字符串

//十進(jìn)制切片數(shù)組轉(zhuǎn)換為16進(jìn)制字符串
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
}

總結(jié)

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

相關(guān)文章

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

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

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

    Go語言入門教程之Arrays、Slices、Maps、Range操作簡(jiǎn)明總結(jié)

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

    docker中部署golang項(xiàng)目的步驟詳解

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

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

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

    Go語言中iota的具體使用

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

    詳解Golang中單元測(cè)試的使用

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

    golang atomic原子操作示例詳解

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

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

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

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

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

    Go語言從單體服務(wù)到微服務(wù)設(shè)計(jì)方案詳解

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

最新評(píng)論