2012-10-11 23 views
11

si chiedeva se qualcuno potesse aiutarmi con la conversione di ascii in esadecimale in bash. Codice Esempio:bash ascii a esadecimale

#!/bin/bash 
STR = "hello" 
#Convert to hex 
HEXVAL = $STR #(in hex here?) 

voglio HEXVAL ad avere il valore: 68656C6C6F (ciao in esadecimale)

+1

Benvenuti in StackOverflow. [Avete già provato qualcosa?] (Http://whathaveyoutried.com) Le persone sono più desiderose di aiutare se si mostrano alcuni sforzi di ricerca prima di chiedere. Altrimenti, apparirà come un [aiuto vampiro] (http://slash7.com/2006/12/22/vampires/) – JMax

+0

dupe possibile di http://stackoverflow.com/questions/5724761/ascii-hex-convert -in-bash – mrchampe

risposta

17
$ STR="hello" 
$ HEXVAL=$(xxd -pu <<< "$STR") 
$ echo "$HEXVAL" 
6C6C6568A6F 

Oppure:

$ HEXVAL=$(hexdump -e '"%X"' <<< "$STR") 
$ echo "$HEXVAL" 
6C6C6568A6F 

Attento con il '"%X"'; ha sia citazioni singole che doppie virgolette.

+0

Eri troppo veloce, pagina man chiusa ;-) – Benj

0

ecco un'uno di linea (un po 'complessa, ma funziona bene):

#!/bin/bash 

echo '0x'"`echo $1 | hexdump -vC | awk 'BEGIN {IFS="\t"} {$1=""; print }' | awk '{sub(/\|.*/,"")}1' | tr -d '\n' | tr -d ' '`" | rev | cut -c 3- | rev 
0

Pure BASH Conversione di stringa sequenza esadecimale stampabile e ritorno

str2hex_echo() { 
    # USAGE: hex_repr=$(str2hex_echo "ABC") 
    #  returns "0x410x420x43" 
    local str=${1:-""} 
    local fmt="0x%x" 
    local chr 
    local -i i 
    for i in `seq 0 $((${#str}-1))`; do 
     chr=${str:i:1} 
     printf "${fmt}" "'${chr}" 
    done 
} 

hex2str_echo() { 
    # USAGE: ASCII_repr=$(hex2str_echo "0x410x420x43") 
    #  returns "ABC" 
    echo -en "'${1:-""//0x/\\x}'" 
} 

SPIEGAZIONE

ASCII-> hex: La salsa segreta di conversione efficiente dal carattere al suo codice ASCII sottostante è caratteristica in printf che, con il formato specificatori non stringhe prende protagonista essere un singolo o doppio virgolette come un ordine per produrre il codice ASCII sottostante del simbolo successivo. Questo comportamento è documentato in GNU BASH reference, ma è anche esposto in dettaglio insieme a molte altre altre utility meravigliose nella pagina wiki di Greg (nota anche come GreyCat), BashFAQ/071, dedicata alle conversioni char-ASCII.

Problemi correlati