2016-12-02 58 views
0

TL;博士:鑑於x,i = b'', 10,我怎麼可以連接到ix,導致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 

然而,這種失敗,因爲我不能追加一個字符串字節。

如何高效地獲取整數值並將其附加到二進制字符串?

+0

我得到的'唯一'選項是'buf + = chr(byte).encode'('ascii')',但這並沒有效果。 – Phrogz

回答

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

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