2016-12-02 3 views
0

Tl; др: Учитывая x,i = b'', 10, как я могу сцепить i на x, в результате чего x == b'\x10'?Append числовое значение двоичной строки

Я пытаюсь кодировать число в 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 

Однако это не удается, потому что я не могу добавить строку в байты.

Как эффективно принять целочисленное значение и добавить его в двоичную строку?

+0

Единственный вариант, я получил, что 'работает' является 'ЬиЕ + = CHR (байт) .encode ('ASCII')', но это не пахнет эффективным. – Phrogz

ответ

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

# option 2 (reportedly faster) 
buf = bytearray() 
buf.append(byte) 
Смежные вопросы