簡體   English   中英

Go中將一個字節轉換為字符串

[英]Convert a byte to a string in Go

我正在嘗試做這樣的事情:

bytes := [4]byte{1,2,3,4}
str := convert(bytes)

//str == "1,2,3,4"

我搜索了很多,真的不知道該怎么做。

我知道這行不通:

str = string(bytes[:])

不是實現它的最有效方法,但您可以簡單地編寫:

func convert( b []byte ) string {
    s := make([]string,len(b))
    for i := range b {
        s[i] = strconv.Itoa(int(b[i]))
    }
    return strings.Join(s,",")
}

被稱為:

bytes := [4]byte{1,2,3,4}
str := convert(bytes[:])

如果您不受確切表示的約束,那么您可以使用fmt.Sprint

fmt.Sprint(bytes) // [1 2 3 4]

另一方面,如果您想要確切的逗號樣式,則必須使用循環和strconv.Itoa自己構建它。

類似於 inf 的建議,但允許使用逗號:

fmt.Sprintf("%d,%d,%d,%d", bytes[0], bytes[1], bytes[2], bytes[3])

使用strings.Builder將是最有效的方式來做同樣的事情..

package main

import (
  "fmt"
  "strings"
)

func convert( bytes []byte) string {
    var str strings.Builder
    for _, b := range bytes {
       fmt.Fprintf(&str, "%d,", int(b))
    }
    return str.String()[:str.Len() - 1]
}

func main(){
    s := [4]byte{1,2,3,4}
    fmt.Println(convert(s[:]))
}

=> 1,2,3,4

func convert( b []byte ) string {
    s := make([]string,len(b))
    for i := range b {
        s[i] = string(b[i])
    }
    return strings.Join(s,",")
}

hex.EncodeToString(input)可能適合你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM