2017-02-22 10 views
1

私は機能があります。のpython3文字列変換の問題

def push(push): 
    ser.write(push + '\r') 
    pull = ser.read(11) 
    return pull 

を、私はこのようにそれを呼び出す:

out = push("ka " + dp_id + " ff") 

それはpython2で非常にうまく機能することが判明したが、私は、Python 3を使用するときに私が取得エラー:

:今、私はこれを行う場合

unicode strings are not supported, please encode to bytes: 'ka 01 ff\r'

混乱し

can't concat bytes to str

イム:

out = push(b"ka " + display_id + " ff") 

は、私はエラーを取得します。何が助けになるの?

答えて

5

問題はpushとは関係ありません。あなたは書く:

b"ka " + display_id + " ff" 
# ^bytes ^string  ^string 

bプレフィックスは、あなたが実際に一連のバイトを書き込むと言います)。

だから動作しません。 の文字列を.encode()というバイト配列にエンコードし、最後の文字列に接頭辞bを使用できます。 So:

b"ka " + display_id.encode() + b" ff" 
# ^bytes ^bytes    ^bytes
+1

ありがとうございました! – DildoShwagginz

関連する問題