在 Go 中生成字节数组

Generating byte array within Go

我正在尝试将一些 Python 代码移植到 Go。

在我的 Python 代码中我这样做:

print(b"\x02" + (3).to_bytes(4, "big", signed=True))

这个returns我[]byte{0x2, 0x0, 0x0, 0x0, 0x3}

这会将 2 添加到我的字节数组的开头,然后在末尾添加 3,前缀为 3 个 0。

在 GO 我在做

digest = append(digest, byte(0x02))
    err := binary.Write(buf, binary.BigEndian, int64(3))
    if err != nil {
        return nil, err
    }
digest = append(digest, buf.Bytes()...)
return digest

这个returns[]byte{0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3}

在Python中我可以选择长度,这似乎是问题所在,在将 int 转换为字节时,Go 中是否有类似的东西?

谢谢!

正如某些评论中所建议的那样,您也可以使用不同的数据类型,例如int32 而不是 int64.

digest = append(digest, byte(0x02))
    err := binary.Write(buf, binary.BigEndian, int32(3))
    if err != nil {
        return nil, err
    }
digest = append(digest, buf.Bytes()...)
return digest

这将产生预期的结果 []byte{0x2, 0x0, 0x0, 0x0, 0x3}