将十六进制字符串转换为bash命令行中的ascii

前端之家收集整理的这篇文章主要介绍了将十六进制字符串转换为bash命令行中的ascii前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有很多这样的字符串,我想找到一个命令来转换它在ascii,我尝试用echo -e和od,但它没有工作.
0xA7.0x9B.0x46.0x8D.0x1E.0x52.0xA7.0x9B.0x7B.0x31.0xD2
代码将文本0xA7.0x9B.0x46.0x8D.0x1E.0x52.0xA7.0x9B.0x7B.0x31.0xD2转换为具有等效值的11个字节的流.这些字节将被写入标准输出.
TESTDATA=$(echo '0xA7.0x9B.0x46.0x8D.0x1E.0x52.0xA7.0x9B.0x7B.0x31.0xD2' | tr '.' ' ')
for c in $TESTDATA; do
    echo $c | xxd -r
done

正如其他人所指出的,这不会导致可打印的ASCII字符串,因为指定的字节不是ASCII.您需要发布有关您如何获取此字符串的更多信息,以帮助您.

如何工作:xxd -r将十六进制数据转换为二进制数(如反向hexdump). xxd要求每一行都从行上的第一个字符的索引号开始(在某些东西上运行hexdump,并查看每行如何从索引号开始).在我们的情况下,我们希望该数字始终为零,因为每个执行只有一行.幸运的是,我们的数据在每个字符之前已经有零,这是0x符号的一部分.小写x被xxd忽略,所以我们要做的就是将每个0xhh字符管道传递给xxd,并让它执行工作.

tr将句点转换为空格,以便将其正确分割.

原文链接:https://www.f2er.com/bash/386542.html

猜你在找的Bash相关文章