go - 将整数放入缓冲区并用零填充左边?

标签 go

我正在尝试实现一个协议(protocol),但目前在执行此步骤时遇到问题:

The big-endian binary representation of the sequence number SHALL be placed in a 16-octet buffer and padded (on the left) with zeros.

序列号是一个int

我认为创建 16 字节缓冲区的正确方法是这样的:

buf := make([]byte, 16)

但是,我不确定如何将序列号放入缓冲区以使其符合上述要求?

最佳答案

听起来你想要这样的东西:

func seqToBuffer(seq int) []byte {
    buf := make([]byte, 16)
    for i := len(buf) - 1; seq != 0; i-- {
        buf[i] = byte(seq & 0xff)
        seq >>= 8
    }
    return buf
}

关于go - 将整数放入缓冲区并用零填充左边?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39552663/

相关文章:

go - 子参数的GraphQL过滤器

go - 如何在 TOML 中定义 map ?

amazon-web-services - 如何让 Go 接受用于 TLS 客户端身份验证的自签名证书?

go - 如何在运行时检测 $GOHOSTOS 和 $GOHOSTARCH?

go - golang 中有 urlencode() 函数吗?

Golang 从变量初始化数组

go - golang 结构的双向绑定(bind)

go - redigo:读取具有可变键的 redis 哈希

go - Go 中的类型别名与类型定义

golang 运行时错误 : index out of range