我有很多这样的字符串,我想找到一个命令来转换它在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将句点转换为空格,以便将其正确分割.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。