33 lines
536 B
Go
33 lines
536 B
Go
package cli
|
|
|
|
import "fmt"
|
|
|
|
// FIXME make this write to a bytes.Buffer with fprintf
|
|
func DumpByteSlice(b []byte) {
|
|
var a [16]byte
|
|
n := (len(b) + 15) &^ 15
|
|
for i := 0; i < n; i++ {
|
|
if i%16 == 0 {
|
|
fmt.Printf("%4d", i)
|
|
}
|
|
if i%8 == 0 {
|
|
fmt.Print(" ")
|
|
}
|
|
if i < len(b) {
|
|
fmt.Printf(" %02X", b[i])
|
|
} else {
|
|
fmt.Print(" ")
|
|
}
|
|
if i >= len(b) {
|
|
a[i%16] = ' '
|
|
} else if b[i] < 32 || b[i] > 126 {
|
|
a[i%16] = '.'
|
|
} else {
|
|
a[i%16] = b[i]
|
|
}
|
|
if i%16 == 15 {
|
|
fmt.Printf(" %s\n", string(a[:]))
|
|
}
|
|
}
|
|
}
|