在 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}
。
我正在尝试将一些 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}
。