Как я могу преобразовать двоичный текст в ASCII на терминале? - PullRequest
0 голосов
/ 11 марта 2020

Мне дан двоичный текстовый файл, такой как 01101011011011110110010101101011011010100011001101110011, и я должен преобразовать его в соответствующий ему ASCII-файл. Как мне поступить?

Ответы [ 3 ]

2 голосов
/ 11 марта 2020

Вы бы попробовали следующее:

fold -w 8 inputfile | while read -r line; do
    hex=$(printf "%x" $(( 2#$line )))
    echo -ne "\x${hex}"
done

Результат:

koekj3s
1 голос
/ 11 марта 2020

Вот решение использовать sed и bc

echo "01101011011011110110010101101011011010100011001101110011" 
        | sed -r 's/(.{8})/\1;/g' 
        | sed 's/^/obase=16;ibase=2;/g' 
        | bc | sed 's/^/\\\\x/g' 
        | xargs echo -e | sed 's/ //g'
1 голос
/ 11 марта 2020

Вы можете сделать это, если у вас есть Python 3:

$ MY_BINARY_STRING='01101011011011110110010101101011011010100011001101110011'
$ python3 -c "import binascii
print(str(binascii.unhexlify('%x' % int('0b'+'$MY_BINARY_STRING', 2)),'utf-8'))"

Выходы:

koekj3s
...