对于这里正在进行的操作不太确定,但是当我进入http://codebeautify.org/string-hex-converter并输入1yS9$dNc时,我看到输出:3179533924644e63。
在巴什,我做:
printf "1yS9$dNc" | xxd
0000000: 3179 5339 1yS9从手册页面中,我得到xxd创建给定文件或标准输入的十六进制转储。
我的问题是:
1yS9$dNc到3179533924644e63)。发布于 2015-10-04 05:43:13
你需要用单引号。比较:
$ printf "1yS9$dNc" | xxd
0000000: 3179 5339 1yS9通过以下方式:
$ printf '1yS9$dNc' | xxd
0000000: 3179 5339 2464 4e63 1yS9$dNcxxd输出短的原因是shell将$dNc的值展开为空字符串。所以,xxd看到的唯一的字符是1yS9。相比之下,如果使用单引号,shell就不会展开任何内容。
在双引号中,shell执行(1)变量展开,(2)命令替换,(3)算术扩展。如果你想要这些,使用双引号,如果你不使用单引号.
格式化选项
要使输出看起来更像代码美化,请使用-g 0
$ printf '1yS9$dNc' | xxd -g 0
0000000: 3179533924644e63 1yS9$dNc或者,更好的是,使用-plain
$ printf '1yS9$dNc' | xxd -plain
3179533924644e63将结果保存在变量中
如果目标是将十六进制值放入shell变量,那么使用bash:
$ printf -v var "%s" $(xxd -p <<<'1yS9$dNc')
$ echo $var
3179533924644e630a帽子提示: David C. Rankin
https://stackoverflow.com/questions/32930402
复制相似问题