[解決済み] ゼロを埋め込むためのHex関数の装飾
2023-02-25 10:14:41
質問
このような簡単な関数を書きました。
def padded_hex(i, l):
given_int = i
given_len = l
hex_result = hex(given_int)[2:] # remove '0x' from beginning of str
num_hex_chars = len(hex_result)
extra_zeros = '0' * (given_len - num_hex_chars) # may not get used..
return ('0x' + hex_result if num_hex_chars == given_len else
'?' * given_len if num_hex_chars > given_len else
'0x' + extra_zeros + hex_result if num_hex_chars < given_len else
None)
例
padded_hex(42,4) # result '0x002a'
hex(15) # result '0xf'
padded_hex(15,1) # result '0xf'
これは私にとっては十分に明確であり、私の使用例(シンプルなプリンタ用のシンプルなテストツール)にも合っていますが、改善の余地がたくさんあり、非常に簡潔なものにまで圧縮できるのではないかと思わずにはいられません。
この問題に対して他にどのようなアプローチがあるのでしょうか?
どのように解決するのですか?
新しい
.format()
文字列メソッドを使用します。
>>> "{0:#0{1}x}".format(42,6)
'0x002a'
説明
{ # Format identifier
0: # first parameter
# # use "0x" prefix
0 # fill with zeroes
{1} # to a length of n characters (including 0x), defined by the second parameter
x # hexadecimal number, using lowercase letters for a-f
} # End of format identifier
もし、文字の16進数は大文字で、接頭辞は小文字の'x'にしたい場合は、ちょっとした回避策が必要でしょう。
>>> '0x{0:0{1}X}'.format(42,4)
'0x002A'
Python 3.6から、こんなこともできるようになりました。
>>> value = 42
>>> padding = 6
>>> f"{value:#0{padding}x}"
'0x002a'
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] Python 言語を決定するには?
-
[解決済み] virtualenvsはどこに作成するのですか?