我有很多这样的字符串,我想找到一个命令来转换它在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个字节的流.这些字节将被写入标准输出.
原文链接:https://www.f2er.com/bash/386542.htmlTESTDATA=$(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将句点转换为空格,以便将其正确分割.