1

私は Python 3.3.2 スクリプトを書いています。これが私のコードのスニペットです:

...
text = filename.readlines()
self.metadata = bytearray(256)
...
struct.pack_into('32s', self.metadata, 4, text[0])
...

text[0] のコンテンツ用にちょうど 32 バイトが予約されています。ただし、文字列は 32 バイトより短いため、未使用のバイトはヌル バイト (0x00) で埋められます。注意事項も参照してください。パディングを 0xFF に変更したい。文字列の実際のサイズを取得し、これを bytearray にパックしてから、残りのバイトを 0xFF として bytearray にパックする以外に、これを行う良い方法はありますか?

4

2 に答える 2

1

最初に ljust メソッドを使用して、目的の 0xff 文字で文字列を 32 バイトにパディングするのはどうですか? ljust(width[, fillchar]) ここで、width はパディング後の文字列の合計の長さであり、fillchar はパディングする文字 (デフォルトではスペース) です。

struct.pack_into('32s', self.metadata, 4, text[0].ljust(32, b'\xff'))
于 2013-06-19T13:50:46.777 に答える