私は既にこれを行うアルゴリズムを持っていますが、コードは醜く遅いです。私は、高速でより正確な結果をもたらす組み込み関数またはlibsの関数があると仮定します。文字列に先行ゼロを追加するPython
最終的なビット数、文字列、リストまたは両端キュー(最後に文字列にキャスト可能なもの)をどこから与えることができますか。
func(totalBits, binaryInStringOrListForm) -> String or List with leading zeroes
私はすでに持っているコードは以下の通りです:
val = deque(["1", "0"])
while len(val) < 8:
val.appendleft("0")
ところで、両端キューを使用すると、先頭に項目を追加することができますここであなたがleftappend
することができますコレクションからオブジェクトの型でありますすべてを1つずつシフトする必要はありません。
これまでの回答はありますが、すべてPython 2であり、書式設定全体が大幅に変更されました。
編集:この質問は、@Martijn Pietersが私に気付かせてくれたように、私が実際に0をリードした後にリンクされたものと重複していないと思います。
EDIT:それは見た目の複製です。嘘つきについては申し訳ありません。
最後の編集:私はただ何かに気付いた。 1バイトの長さにしようとすると、000b0110のような値が得られます。これは私が望む00000110とは対照的です。私はこれを追加して、将来他の誰かがこの質問を見ても、正しいことを見つけることができるようにしています。私はその文字列を返す「ビン」と2進数に番号を回してるので、私はこれを取得してい
val = val[2::].rjust(8, '0')
:だから私はやったすべてが使用して、文字列の最初の2つの文字を無視しています最初は "0b"(バイナリとして宣言しています)を持っています。
理由だけではなく、文字列の連結を使用していませんか? –
* left *に追加している場合は、** leading **のゼロを追加していませんか? –
文字列は不変であるため、Pythonは連結された新しい文字列ごとに新しい文字列を作成しなければなりません。これは遅いです。私はこれのために速く必要です。 – Frogboxe