変数から標準のバイナリ形式の長さを指定しようとしていますが、何らかの理由で機能しません。書式設定が間違っているか、変数を含めていますか?
comp.write("{0:%ib}".format(I) % num_bits)
ValueError: 変換指定が無効です
変数から標準のバイナリ形式の長さを指定しようとしていますが、何らかの理由で機能しません。書式設定が間違っているか、変数を含めていますか?
comp.write("{0:%ib}".format(I) % num_bits)
ValueError: 変換指定が無効です
まず、順序が間違っています。
("{0:%ib}" % num_bits).format(I)
第二に、これはそれを行う方法ではありません! 書式設定演算子の種類を混同することは、一緒に実行できることを知らないことを意味します。あなたがしたい:
"{:{}b}".format(I, num_bits)
そして、本当に2つのステップでそれをしたい場合:
"{{:{}b}}".format(num_bits).format(I)
{{
と}}
はエスケープされるため、最初の の後に単一の中括弧に変換されます.format
。
あなたは間違った方法で補間を行っています。%i
に渡す前に を解決する必要がありますformat
。これはうまくいきます:
comp.write(("{0:%ib}" % num_bits).format(I))
しかし、かなりひどいので、おそらく2つに分割したいと思うでしょう:
fmt = "{0:%ib}" % num_bits
comp.write(fmt.format(I))