二进制字符串转unicode

Binary string to unicode

我不是 100% 确定为什么我的 Unicode 二进制字符串不起作用..任何人都可以指出问题或帮助我修补它吗?另外,我将二进制文件分块的原因是它对于 ParseInt 来说太大而无法处理。有关示例,请参见下面的操场 link。

func binToString(s []byte) string {
    var counter int
    chunk := make([]byte, 7)
    var buf bytes.Buffer
    for i := range s {
        if i%8 == 0 {
            counter = 0
            if i, err := strconv.ParseInt(string(chunk), 2, 64); err == nil {
                buf.WriteString(string(i))
            }
        } else {
            chunk[counter] = s[i] //i know i can use modulus here too but i was testing and an counter was easier to track and test for me
            counter++
        }
    }
    return buf.String()
}

转换时似乎漏掉了一个字符或添加了一个(或两个)字符。

这里有一个 playground link 显示函数未按预期工作的示例。

您的函数可以以更简单、更有效的方式实现:

func binToString(s []byte) string {
    output := make([]byte, len(s)/8)
    for i := 0; i < len(output); i++ {
        val, err := strconv.ParseInt(string(s[i*8:(i+1)*8]), 2, 64)
        if err == nil {
            output[i] = byte(val)
        }
    }
    return string(output)
}

https://play.golang.org/p/Fmo7I-rN3c