Как распечатать массив байтов []byte{255, 253} как двоичный в Golang?

Т.е.

[]byte{255, 253} --> 1111111111111101
8
Pylinux 3 Авг 2017 в 21:41

2 ответа

Лучший ответ

Самый простой способ, который я нашел:

package main

import "fmt"

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

Игровая площадка с этим кодом: https://play.golang.org/p/eVez0vD4pJk

17
Pylinux 10 Янв 2019 в 12:58
Также есть strconv.FormatUint, если вам нужна строка, но та же идея.
 – 
JimB
3 Авг 2017 в 22:25
1
У вас есть площадка с примером strconv.FormatUint для печати двоичных файлов?
 – 
Pylinux
4 Авг 2017 в 23:40
Хорошо, это замена fmt.Printf, я надеялся, что это замена для цикла :-)
 – 
Pylinux
6 Авг 2017 в 01:13

Или используйте эту простую версию

func printAsBinary(bytes []byte) {

    for i := 0; i < len(bytes); i++ {
        for j := 0; j < 8; j++ {
            zeroOrOne := bytes[i] >> (7 - j) & 1
            fmt.Printf("%c", '0'+zeroOrOne)
        }
        fmt.Print(" ")
    }
    fmt.Println()
}

[]byte{0, 1, 127, 255} --> 00000000 00000001 01111111 11111111
0
Nitsan BenHanoch 11 Май 2021 в 20:34