如何在golang中将字节数组打印为二进制?

Pyl*_*nux 5 arrays binary go

如何[]byte{255, 253}在Golang中将字节数组打印为二进制?

[]byte{255, 253} --> 1111111111111101
Run Code Online (Sandbox Code Playgroud)

Pyl*_*nux 12

最简单的方法我发现:

package main

import "fmt"

func main() {
    bs := []byte{0x00, 0xfd}
    for _, n := range(bs) {
        fmt.Printf("% 08b", n) // prints 00000000 11111101
    }
}
Run Code Online (Sandbox Code Playgroud)

游乐场使用此代码:https://play.golang.org/p/eVez0vD4pJk


Dav*_*nes 2

fmt.Printf可以打印切片和数组并将格式应用于数组的元素。这避免了循环并使我们非常接近:

package main

import "fmt"

func main() {
    bs := []byte{0xff, 0xfd}
    fmt.Printf("%08b\n", bs) // prints [11111111 11111101]
}
Run Code Online (Sandbox Code Playgroud)

带有上述代码的游乐场:https://go.dev/play/p/8RjBJFFI4vf

额外的括号(是切片符号的一部分)可以用以下命令删除strings.Trim()

fmt.Println(strings.Trim(fmt.Sprintf("%08b", bs), "[]")) // prints 11111111 11111101
Run Code Online (Sandbox Code Playgroud)