Как распечатать (числовые) значения ASCII каждого символа в файле?

Вы можете использовать:

dmidecode -t 1

Что выводит что-то вроде:

System Information
    Manufacturer: Dell Inc.
    Product Name: PowerEdge R210 II
    Version: Not Specified
    Serial Number: 1234ABC
    UUID: ABABABAB-0101-2323-5A5A-ABCDEF123456
    Wake-up Type: Power Switch
    SKU Number: Not Specified
    Family: Not Specified
11
09.03.2016, 08:54
2 ответа

hexdump, od, xxd или $YOUR_FAVORITE_LANGUAGE могут сделать это.

% echo Apple | hexdump -C
00000000  41 70 70 6c 65 0a                                 |Apple.|
00000006
% echo Apple | perl -ne 'printf "%vd\n", $_' 
65.112.112.108.101.10
% echo Apple | clisp <( echo '(print (mapcar #'\''char-code (coerce (read-line *standard-input*) '\''list)))' )
(65 112 112 108 101)
% 
16
27.01.2020, 19:57

Стандартная стандартная команда для этого - od, для восьмеричного дампа (хотя с помощью опций вы можете перейти от восьмеричного к десятичному или шестнадцатеричному...):

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

Обратите внимание, что она выводит значение каждого байта в файле. Это не имеет ничего общего с ASCII или любым другим набором символов.

Если файл содержит A в данном наборе символов, и вы хотите увидеть 65, потому что именно этот байт используется для A в ASCII, то вам нужно сделать:

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

Сначала преобразовать этот файл в ascii, а затем вывести соответствующие значения байтов. Например, Apple в EBCDIC-UK будет 193 151 151 147 133 37 (301 227 227 223 205 045 в восьмеричной системе).

$ printf '\301\227\227\223\205\045' | iconv -f ebcdic-uk -t ascii | od -An -vtu1
  65 112 112 108 101  10
21
27.01.2020, 19:57

Теги

Похожие вопросы