2016-12-02 17 views
0

TLを数値を追加し、DRx,i = b'', 10を考えると、どのように私はx == b'\x10'その結果、xiを連結することができますか?は、バイナリ文字列に

私は、protobufエンコーディングのヘッダとしてvarintという数字をPythonでエンコードしようとしています。

は、ここで私が持っているコードです:私はバイトに文字列を追加することはできませんので

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) 
関連する問題