将数值附加到二进制字符串

时间:2016-12-02 21:49:21

标签: python python-3.x binary

tl; dr :鉴于x,i = b'', 10,如何将i连接到x,从而产生x == b'\x10'

我正在尝试将Python中的数字编码为varint作为protobuf编码的标头。

这是我的代码:

def encode_varint(value):
    buf = b''
    while True:
        byte = value & 0x7f
        value >>= 7
        if value:
            buf += chr(byte | 0x80)
        else:
            buf += chr(byte)
            break
    return buf

但是,这会失败,因为我无法将字符串附加到字节。

如何有效地获取整数值并将其附加到二进制字符串?

1 个答案:

答案 0 :(得分:0)

# option 1 (reportedly slower)
buf = b''
buf += bytes([byte])

# option 2 (reportedly faster)
buf = bytearray()
buf.append(byte)