2017-10-02 14 views
1

これはやや奇妙な質問です。 123456などの整数のIDをb'123456 'の形式のバイトに変換する必要があります。私はバイトへの実際の変換を行っていませんが、私はただバイトのように見えるようにフォーマットを変更し、1と解釈されます。だから私は文字通り次のことをする必要があります:intを "byte"に変換する

10 = b'10' 
20 = b'20' 
30 = b'30' 

などです。私は文字列に変換できません。なぜなら、結果はバイトでなければならないからです。bytes([10]) == b'\n'b'10'ではないため)実際のバイト変換はできません。

この翻訳を強制する助けやアドバイスは大変ありがとうございます。

+0

'STR(10).encode()' – poke

答えて

2

bytesに続いstr.encodeintを変換します

>>> x = 123456 
>>> bs = str(x).encode('ascii') 
>>> bs 
b'123456' 
+0

が魅力のように働いた - ありがとう! – user3456269

1

102030が実際にあるかについて考えてみてください。確かに、数字ですが、正確には10は実際の数字のdecimal representationです。通常、単一の番号の表現はさまざまです。例えば、0xA,0o12および0b1010は、小数の表現で10と書かれた同じ番号の異なる表現です。

まず、数値の10進表現を取得する方法について考える必要があります。幸いなことに、それは10進表記が数字の一般的なデフォルトであるため、非常に簡単です。だから、あなただけstr() functionを呼び出すことによって文字列に自分の番号を変換する必要があります:あなたはそれを行うたら

>>> str(10) 
'10' 
>>> str(20) 
'20' 

、あなたの数の正確な表現で文字列を持っています。だから、残っているのは、その文字列bytesオブジェクトに変換する方法を尋ねることです。 Python 3では、bytesオブジェクトは単なる一連のバイトです。したがって、文字列をバイトシーケンスに変換するには、文字列内の各文字をどのように表現するかを決定する必要があります。このプロセスはエンコーディングと呼ばれ、str.encode()を使用して行われます。 ASCIIの範囲から文字については、それはすべての一般的なエンコーディングで同じであるとして、あなただけのデフォルトのUTF-8に固執することができますので、実際のエンコードは、本当に、重要ではありません。

>>> '10'.encode() 
b'10' 
>>> '20'.encode() 
b'20' 

だから今、あなたはあなたが必要なすべてを持っています。ただ、これらの二つのものを組み合わせて、あなたはその10進表現のbytesオブジェクトにあなたの番号を変換することができます。

>>> str(10).encode() 
b'10' 
>>> str(20).encode() 
b'20' 
関連する問題