go极简代码将byte数组转为二进制字符串,不足8位自动填充

7 篇文章 0 订阅

需要以二进制的形式查看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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值