Expansión bash hexadecimal


10

Me gustaría saber si hay una manera de usar la expansión bash para ver todas las posibilidades de combinación de varios dígitos en hexadecimal. Puedo ampliar en binarios

En la base 2:

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

Lo que devuelve:

000 001 010 011 100 101 110 111

En base 10:

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

Lo que devuelve:

00  01 02...99

Pero en hexadecimal:

echo {0..F}

Solo repite:

{0..F}

Tenga echo {0-9A-F}en cuenta que funciona en zsh con la BRACE_CCLopción.
TonioElGringo

Tenga en cuenta que en la base 10 también se podría decir {00..99}que obtenga el mismo resultado.
Ruslan

Respuestas:


20

Usted puede; solo necesita dividir el rango {0..F}en dos rangos separados {0..9}y {A..F}:

$ printf '%s\n' {{0..9},{A..F}}{{0..9},{A..F}}
00
01
...
FE
EF

¡Este es un truco mejor que escribir manualmente cada dígito en 0-9A-F!
dhag

14

Utilizando printf:

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

La cadena de formato %.2xdice formatear la salida como un número hexadecimal en minúscula, de dos dígitos, con relleno de cero ( %02xhabría hecho lo mismo).

Si desea mayúsculas, use %.2X.

Bash solo comprende rangos enteros de base 10 o rangos entre caracteres ASCII en expansiones de intervalos entre llaves.


7

Es posible pero no es agradable:

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}

Por lo que puedo decir, bashno tiene noción de rangos hexagonales.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.