Standard library support
fmt.Printf("%b", r)stringSprintf()
s := fmt.Sprintf("%b", r)
strconv.FormatInt()int64rune2
s := strconv.FormatInt(int64(r), 2)
runeint32
Doing it manually ("Simple but Naive"):
r & 0x01 == 0r >>= 1"1""0"
string
func RuneToBin(r rune) (s string) {
if r == 0 {
return "0"
}
for digits := []string{"0", "1"}; r > 0; r >>= 1 {
s = digits[r&1] + s
}
return
}
'-'
Manual Performance-wise solution:
'0''1'runestringappend
func RuneToBinFast(r rune) string {
if r == 0 {
return "0"
}
b, i := [32]byte{}, 31
for ; r > 0; r, i = r>>1, i-1 {
if r&1 == 0 {
b[i] = '0'
} else {
b[i] = '1'
}
}
return string(b[i+1:])
}