需要以二进制的形式查看byte数组,怎么写呢?直接上代码。
func BytesToBinaryString(bs []byte) string {
buf := bytes.NewBuffer([]byte{})
for _, v := range bs {
buf.WriteString(fmt.Sprintf("%08b", v))
}
return buf.String()
}
附上测试用例
func TestBytesToBinaryString(t *testing.T) {
type testcase struct {
bytes []byte
expectRes string
}
testcases := []testcase{}
testcases = append(testcases, testcase{
bytes: []byte{1},
expectRes: "00000001",
})
testcases = append(testcases, testcase{
bytes: []byte{0, 1},
expectRes: "0000000000000001",
})
testcases = append(testcases, testcase{
bytes: []byte{255, 254},
expectRes: "1111111111111110",
})
testcases = append(testcases, testcase{
bytes: []byte{0, 2, 0},
expectRes: "000000000000001000000000",
})
for _, v := range testcases {
res := BytesToBinaryString(v.bytes)
t.Logf("testcase [%+v] expect [%s], get [%s]", v.bytes, v.expectRes, res)
if res != v.expectRes {
t.Error("fail")
}
}
}
测试结果:
=== RUN TestBytesToBinaryString
--- PASS: TestBytesToBinaryString (0.00s)
numberUtil_test.go:145: testcase [[1]] expect [00000001], get [00000001]
numberUtil_test.go:145: testcase [[0 1]] expect [0000000000000001], get [0000000000000001]
numberUtil_test.go:145: testcase [[255 254]] expect [1111111111111110], get [1111111111111110]
numberUtil_test.go:145: testcase [[0 2 0]] expect [000000000000001000000000], get [000000000000001000000000]
PASS