将字节数组的golang字符串格式转换回原始字节数组

时间:2017-09-28 19:35:23

标签: go

所以我开始将消息作为字符串,将其转换为字节数组并打印出来,我现在已经丢失了原始字符串但是具有字节数组的字符串输出。我想要我的字符串。 (不要问我为什么这样做或如何...我没有,这只是为了说明目的)。

基本上我缺少的是将字节数组的打印表示形式转换回字节数组的便捷方法。

请参阅下面的示例,更好地解释我正在尝试做的事情(完成'otherWay'功能):

go playground

package main

import (
    "fmt"
)

func main() {
    // started with originalString and lost it
    originalString := "I'm a string I am!"

    // I have the output of 'oneWay()' in my clipboard, so could paste into code
    golangStringFormatOfByteArray := oneWay(originalString)
    fmt.Println("String as bytes:", golangStringFormatOfByteArray )

    // get original string back
    returnString := otherWay(golangStringFormatOfByteArray )
    fmt.Println("Original String:", returnString )

}

func oneWay(theString string) string {

    theStringAsBytes := []byte(theString)
    golangStringFormatOfByteArray := fmt.Sprintf("%v", theStringAsBytes)

    return golangStringFormatOfByteArray 
}

func otherWay(stringFormat string) string {

    // how do I get the original string back

    return "I want you back"
}

1 个答案:

答案 0 :(得分:3)

嗯,这是一个有趣的练习,如果有点无意义:

s := "WAT"

// Output as bytes
b := []byte(s)
bs := fmt.Sprintf("%v", b)

// Read bytes
var bb []byte
for _, ps := range strings.Split(strings.Trim(bs, "[]"), " ") {
    pi,_ := strconv.Atoi(ps)
    bb = append(bb,byte(pi))
}

// Print result
fmt.Printf("%s -> %s -> %s",s,bs,bb)

https://play.golang.org/p/6cRYVJ7goD

WAT - > [87 65 84] - > WAT