首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串转换为编码的十六进制

将字符串转换为编码的十六进制
EN

Stack Overflow用户
提问于 2015-10-04 05:39:02
回答 1查看 287关注 0票数 1

对于这里正在进行的操作不太确定,但是当我进入http://codebeautify.org/string-hex-converter并输入1yS9$dNc时,我看到输出:3179533924644e63

在巴什,我做:

代码语言:javascript
复制
printf "1yS9$dNc" | xxd
0000000: 3179 5339                                1yS9

从手册页面中,我得到xxd创建给定文件或标准输入的十六进制转储。

我的问题是:

  1. 我是否可以使用Bash从代码美化获得相同的输出(即从1yS9$dNc3179533924644e63)。
  2. 代码美化编码是如何不同的呢?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-04 05:43:13

你需要用单引号。比较:

代码语言:javascript
复制
$ printf "1yS9$dNc" | xxd
0000000: 3179 5339                                1yS9

通过以下方式:

代码语言:javascript
复制
$ printf '1yS9$dNc' | xxd
0000000: 3179 5339 2464 4e63                      1yS9$dNc

xxd输出短的原因是shell将$dNc的值展开为空字符串。所以,xxd看到的唯一的字符是1yS9。相比之下,如果使用单引号,shell就不会展开任何内容。

在双引号中,shell执行(1)变量展开,(2)命令替换,(3)算术扩展。如果你想要这些,使用双引号,如果你不使用单引号.

格式化选项

要使输出看起来更像代码美化,请使用-g 0

代码语言:javascript
复制
$ printf '1yS9$dNc' | xxd -g 0
0000000: 3179533924644e63                  1yS9$dNc

或者,更好的是,使用-plain

代码语言:javascript
复制
$ printf '1yS9$dNc' | xxd -plain
3179533924644e63

将结果保存在变量中

如果目标是将十六进制值放入shell变量,那么使用bash:

代码语言:javascript
复制
$ printf -v var "%s" $(xxd -p <<<'1yS9$dNc')
$ echo $var
3179533924644e630a

帽子提示: David C. Rankin

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32930402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档