2016-12-02 4 views
0

tl; dr: Gegeben x,i = b'', 10, wie kann ich verketten i auf x, was zu x == b'\x10'?Anfügen numerischer Wert Binärkette

Ich versuche eine Zahl in Python als varint als Header für eine Protobuf-Codierung zu kodieren.

Hier ist der Code, den ich habe:

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 

Dies ist jedoch nicht, weil ich nicht einen String in Bytes anhängen können.

Wie kann ich effizient einen ganzzahligen Wert nehmen und an eine binäre Zeichenfolge anhängen?

+0

Die einzige Option, die ich bekommen habe, dass "funktioniert" ist 'buf + = chr (byte) .encode ('ascii')', aber das riecht nicht effizient. – Phrogz

Antwort

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

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