Текстовое преобразование, двоичные единицы информации-> шестнадцатеричное число (или десятичное число)

У меня есть огромный текстовый файл с цифрами, представляющими 8 битовых значений в двоичном файле. Я хочу преобразовать их в шестнадцатеричный (или десятичное число, действительно не имеет значения). Таким образом, у меня есть текстовый файл, содержащий, например.

0 0 0 0  1 1 0 1
0 0 1 1  1 0 0 1
0 1 0 0  0 1 0 1
1 0 0 0  1 1 0 1

(всего 8 битов) и я хотел бы преобразовать это в, скажем,

0x0d
0x39
0x45
0x1d

Это кажется, что это могло быть сделано с awk макросом сценария/энергии или комбинацией любых других инструментов.

3
задан 2 September 2011 в 21:06

3 ответа

Здесь отрывок сценариев удара, чтобы сделать это

while read line; do
    n=$((2#${line// /}))
    printf '0x%02X\n' "$n"
done <input-file

где 2# средства базируются 2 и ${var// /} означает, "удаляют все пробелы"

5
ответ дан 1 December 2019 в 13:07

С awk:

awk '{d=0; for (i=1; i<=NF; i++) {d=(d*2)+$i} printf "0x%02x\n", d}' binary.txt

Или с до н.э:

(echo obase=16; ibase=2; sed 's/ //g' binary.txt) | bc
3
ответ дан 1 December 2019 в 13:07

С Perl:

perl -ne 's/ *//g; printf("0x%02x\n", eval("0b$_"))' somefile.txt
3
ответ дан 1 December 2019 в 13:07

Другие вопросы по тегам:

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