deepwell
deepwell

Reputation: 20871

Convert string to binary in Go

How do you convert a string to its binary representation in Go?

Example:

Input: "A"

Output: "01000001"

In my testing, fmt.Sprintf("%b", 75) only works on integers.

Upvotes: 3

Views: 4971

Answers (2)

SnoProblem
SnoProblem

Reputation: 1939

Cast the 1-character string to a byte in order to get its numerical representation.

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

Output:  "01000001"

(Bear in mind code "%b" (without number in between) causes leading zeros in output to be dropped.)

Upvotes: 6

Michael Laszlo
Michael Laszlo

Reputation: 12239

You have to iterate over the runes of the string:

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

Or over the bytes:

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())
}

Live playground:

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

Upvotes: 5

Related Questions