9

パディングされた文字列をファイルに書き込むために struct.pack を使用しようとしていますが、3.x インタープリターではこれが機能しなくなったようです。私がそれをどのように使用しているかの例:

mystring = anotherString+" sometext here"
output = struct.pack("30s", mystring);

これは以前のバージョンの python では問題ないように見えますが、3 ではバイト オブジェクトを要求するエラーが発生します。ドキュメントは、苦情なしで文字列をUTF-8バイトオブジェクトに変換することになっていることを暗示しているようです(マルチバイト文字がたまたま切り捨てられてもかまいません):

http://docs.python.org/release/3.1.5/library/struct.html : 「c、s、および p 変換コードはバイト オブジェクトで動作しますが、そのようなコードでのパッキングは str オブジェクトもサポートし、これは次を使用してエンコードされます。 UTF-8.」

私はドキュメントを読み違えていますか? 他の人は文字列で struct.pack をどのように使用していますか?

4

2 に答える 2

3

私は間違っているかもしれませんが、この場合はうまくいきません.encode('UTF-8')か?例えば:

output = struct.pack("30s", mystring.encode('UTF-8'));

私は訂正される立場にあります。

于 2016-09-13T12:58:39.027 に答える