web-dev-qa-db-fra.com

Comment imprimer les valeurs (numériques) ASCII de chaque personnage d'un fichier?

Comment puis-je imprimer les valeurs numériques ASCII de chaque caractère dans un fichier texte. Comme cat, mais montrant les valeurs ASCII = .. . (hex ou décimal va bien).

Exemple de sortie pour un fichier contenant le mot Apple (avec un flux de lignes) pourrait ressembler à:

065 112 112 108 101 013 004
11
Mtl Dev

La commande standard pour cela est od, pour un déchargement octal (bien que des options, vous pouvez passer d'octal à décimal ou hexadécimal ...):

$ echo Apple | od -An -vtu1
  65 112 112 108 101  10

Notez qu'il diffuse la valeur d'octets de chaque octet dans le fichier. Cela n'a rien à voir avec ASCII ou tout autre jeu de caractères.

Si le fichier contient A A dans un jeu de caractères donné et que vous souhaitez voir 65, car c'est l'octet utilisé pour A en ASCII, vous auriez alors besoin de faire:

< file iconv -f that-charset -t ascii | od -An -vtu1

Pour d'abord convertir ce fichier en ASCII, puis vider les valeurs d'octets correspondants. Par exemple Apple<LF> dans EbcDic-Royaume-Uni serait 193 151 151 147 133 37 (301 227 227 223 205 045 en octale).

$ printf '\301\227\227\223\205\045' | iconv -f ebcdic-uk -t ascii | od -An -vtu1
  65 112 112 108 101  10
17