私は様々なバイトをASCII表現の形でシリアルで書いています。シリアルPython3のバイナリ表現
相続人の例:この関数
def convert_addr_with_flag(addr, flag):
if(addr[0:1]!="0x"):
# String does not have hex start, for representation
addr = "0x" + addr
# Convert String to int
return binascii.unhexlify(str(hex(int(addr, 16) + (flag << 31))[2:].zfill(8))) # Return the int value, bit shiffted with flag
:bytes_to_write = '\aa' # Will write 01010101
は、今、私が送信するものの一部を転送する必要がある4つのバイトを計算する私を必要とする、私は以下の機能を使用してバイトを計算しますしかし、ASCII文字列の代わりにバイナリ文字列を返します。ここに例があります... convert_addr_with_flag("00ACFF21", 1) # Output: b'\x80\xac\xff!'
私の質問は、この出力をパケットの他のバイトに追加できる形式にする方法です。例えば..私はすでにdecode("UTF-8)
とUTF-16およびASCIIを使用して、 を試してみました相続人は何
part_1 = '\xaa\xaa' # 2 bytes
part_2 = '\x55\x55' # 2 bytes
part_3 = convert_addr_with_flag("00ACFF21", 1) # 4 bytes
full_packet = part_1 + part_2 + part_3 # Will not work, as part_3 is a binary string (b'\x80\xac\xff!)
。バイト列は理解できません。 スライシング。 [2]は私にバイナリ文字を与えますが、 '2番目のバイト'は返しません
ヒントは非常に高く評価されるでしょう! part_3
のないASCII表現がないため
のPython 3.4
あなたはピクルモジュールを考えましたか?これは、ワイヤ(ファイル、ソケット)を介してデータを送信することができ、同様にあなたのためのデータを再構築します。 – rts1
残念ながら、正確なバイナリをワイヤで送信する必要があります。面白いモジュールですが、将来的には手軽に利用できます – Harvey