Bash ekspansi heksadesimal

10

Saya ingin tahu apakah ada cara menggunakan ekspansi bash untuk melihat semua kemungkinan kombinasi untuk sejumlah digit dalam heksadesimal. Saya bisa mengembang dalam binari

Di basis 2:

echo {0..1}{0..1}{0..1}

Yang memberi kembali:

000 001 010 011 100 101 110 111

Di base 10:

echo {0..9}{0..9}

Yang memberi kembali:

00  01 02...99

Tetapi dalam heksadesimal:

echo {0..F}

Ulangi saja:

{0..F}
David Borges
sumber
Perhatikan bahwa echo {0-9A-F}berfungsi di zsh dengan BRACE_CCLopsi.
TonioElGringo
Perhatikan bahwa pada basis 10 Anda juga bisa mengatakan {00..99}untuk mendapatkan output yang sama.
Ruslan

Jawaban:

20

Kamu bisa; Anda hanya perlu memecah rentang {0..F}menjadi dua rentang terpisah {0..9}dan {A..F}:

$ printf '%s\n' {{0..9},{A..F}}{{0..9},{A..F}}
00
01
...
FE
EF
chepner
sumber
Ini adalah trik yang lebih baik daripada menulis setiap digit secara manual di 0-9A-F!
Dhag
14

Menggunakan printf:

$ printf '%.2x\n' {0..255}

String format %.2xmengatakan untuk memformat output sebagai angka heksadesimal nol-diisi, dua digit, huruf kecil, ( %02xakan melakukan hal yang sama).

Jika Anda ingin huruf besar, gunakan %.2X.

Bash hanya memahami rentang bilangan bulat 10 atau rentang antara karakter ASCII dalam perluasan interval kurung.

Kusalananda
sumber
7

Itu mungkin tetapi itu tidak baik:

echo {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

Sejauh yang saya tahu bashtidak memiliki gagasan tentang rentang hex.

Satō Katsura
sumber