在Go中将字符串转换为二进制

dee*_*ell 3 string binary go

如何将字符串转换为Go中的二进制表示?

例:

输入:"A"

输出:"01000001"

在我的测试中,fmt.Sprintf("%b", 75)只适用于整数.

Sno*_*lem 5

将1个字符的字符串转换为一个字节,以获得其数字表示.

s := "A"
st := fmt.Sprintf("%08b", byte(s[0]))
fmt.Println(st)

Output:  "01000001"
Run Code Online (Sandbox Code Playgroud)

(请记住代码"%b"(中间没有数字)会导致输出中的前导零被丢弃.)


Mic*_*zlo 5

你必须迭代字符串的符文:

func toBinaryRunes(s string) string {
    var buffer bytes.Buffer
    for _, runeValue := range s {
        fmt.Fprintf(&buffer, "%b", runeValue)
    }
    return fmt.Sprintf("%s", buffer.Bytes())
}
Run Code Online (Sandbox Code Playgroud)

或者超过字节:

func toBinaryBytes(s string) string {
    var buffer bytes.Buffer
    for i := 0; i < len(s); i++ {
        fmt.Fprintf(&buffer, "%b", s[i])
    }
    return fmt.Sprintf("%s", buffer.Bytes())
}
Run Code Online (Sandbox Code Playgroud)

现场操场:

http://play.golang.org/p/MXZ1Y17xWa