使用'xxd'进行二进制到ASCII转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用'xxd'进行二进制到ASCII转换相关的知识,希望对你有一定的参考价值。
我知道如何将十六进制转储转换为ASCII。
echo 54 58 72 56 etc | xxd -r -p
- >将产生ASCII输出
但我正在努力将以下二进制代码转换为ASCII。
01000001 01110010 01100101 01101110 00100111 01110100 00100000 01111001 01101111 01110101 00100000 01100001 00100000 01101100 01101001 01110100 01110100 01101100 01100101 00100000 01110011 01101000 01101111 01110010 01110100 00100000 01100110 01101111 01110010 00100000 01100001 00100000 01110011 01110100 01101111 01110010 01101101 00100000 01110100 01110010 01101111 01101111 01110000 01100101 01110010 00111111 00001101 00001010
我需要使用'xxd'或类似的可能命令来做这个。
先感谢您!
如果你想坚持使用xxd
,那么你需要先将每个二进制数转换为十进制数。如果你正在使用bash
,而x
包含你的二进制字符串,那么:
for a in $x; do printf "%x" $((2#$a)); done | xxd -r -p
$((2#$a))
是bash中的二进制到十进制转换,而printf
会将其转换为十六进制。然后把它送到xxd
- 然后得到你以前得到的东西。
对于风暴骑兵来说,你不是有点短吗?
如果字符串包含在文件中,则逐行读取,然后逐字读取。另一个选择是只使用printf
,但是你需要八进制数,所以使用printf
两次:
for a in $x; do printf \$(printf "%o" $((2#$a))); done
实际上,最后一个也可以用hex
完成,只需使用而不是\
\x
和%o
恢复到%x
。
以上是关于使用'xxd'进行二进制到ASCII转换的主要内容,如果未能解决你的问题,请参考以下文章