Je voudrais convertir code ASCII (comme -
, _
, .
, etc.) représentation hexadécimale en shell Unix (sans commande bc). Par exemple, -
=>%2d
.Convertir code ASCII en hexadécimal dans un script shell Unix
Comment puis-je le faire?
Je voudrais convertir code ASCII (comme -
, _
, .
, etc.) représentation hexadécimale en shell Unix (sans commande bc). Par exemple, -
=>%2d
.Convertir code ASCII en hexadécimal dans un script shell Unix
Comment puis-je le faire?
perl -e 'print ord("_"), "\n"'
thx beaucoup, je vais utiliser cette expression avec unpack: perl -e 'imprimer unpack ("H *", "-"), "\ n"' –
Mais ceci Perl doit être installé ... –
Cela fonctionne dans Bash, Dash (sh), ksh, zsh et de cendres et utilise seulement builtins:
Edit:
Voici une version de ord qui sort dans l'hexagone et chr qui accepte l'entrée hexagonale:
ordhex()
{
printf '%x' "'$1"
}
chrhex()
{
printf \\x"$1"
}
Les versions décimales originales:
ord()
{
echo -n $(((256 + $(printf '%d' "'$1"))%256))
}
Exemples (avec les nouvelles lignes ajoutées):
$ ord ' '
32
$ ord _
95
$ ord A
65
$ ord '*'
42
$ ord \~
126
Voici le correspondant chr
:
chr()
{
printf \\$(($1/64*100+$1%64/8*10+$1%8))
}
Exemples:
$ chr 125
}
$ chr 42
*
$ chr 0 | xxd
0000000: 00 .
$ chr 255 | xxd
0000000: ff .
thx mais la fonction ord me donne la valeur décimale, je voudrais la valeur hexadécimale du code ascii, merci pour votre aide –
@Olivier: Voir mon edit. –
super, ça marche! Merci beaucoup –
python -c « import sys; print "{0: 02x}". Format (ord (sys.argv [1])) ' '_'
ou
python -c' print "{0: 02x}" .format (ord ("_")) '
Je suis d'accord pour dire que ce n'est pas le plus sympa, mais je n'ai pas pu résister après avoir vu la réponse basée sur Perl.
Les travaux suivants dans la version ksh j'utilise:
chr()
{
printf \\x$1
}
Peut 'sed' /' awk'/'perl' etc utiliser? – kennytm
seulement sed ou bash/sh shell s'il vous plaît;) –