首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >六转储转换字符串被格式字符串中的转义字符包围

六转储转换字符串被格式字符串中的转义字符包围
EN

Stack Overflow用户
提问于 2015-12-07 23:18:51
回答 1查看 1.1K关注 0票数 1

我正在尝试从hexdump获得以下结果

代码语言:javascript
复制
    78      79      7a

那就是"\t78\t\t79\t\t7a\t"

正在尝试

代码语言:javascript
复制
echo -n xyz | hexdump -e '1/1 "\t%x\t"'

导致错误:

代码语言:javascript
复制
hexdump: %  : bad conversion character

代码语言:javascript
复制
echo -n xyz | hexdump -e '1/1 "|%x|"'

正确产量

代码语言:javascript
复制
|78||79||7a|

增加空格:

代码语言:javascript
复制
echo -n xyz | hexdump -e '1/1 "\t %x \t"'

做某事

代码语言:javascript
复制
    t 78        t 79        t 7a    

这是"\tt 78\t\tt 79\t\tt 7a\t",但我得到了所需的制表符和文字字母t,加上一些不需要的空格字符。

只使用一个尾随制表符时,它就能工作。

代码语言:javascript
复制
echo -n xyz | hexdump -e '1/1 "%x\t"'

给我

代码语言:javascript
复制
78  79  7a  

它是"78\t79\t7a\t",但不适用于单个前导选项卡

代码语言:javascript
复制
echo -n xyz | hexdump -e '1/1 "\t%x"'

这又给了我一个错误

代码语言:javascript
复制
hexdump: %A: bad conversion character

我不知道这个错误是从哪里来的,因为在任何地方都没有%A

根据手册页,\t应该是一个受支持的转义序列,我把它当作printf中的任何其他字符。

格式是必需的,必须被双引号(“")包围。它被解释为fprintf样式的格式字符串(请参阅fprintf(3)),但有以下例外: +o星号(*)不能用作字段宽度或精度。+o不支持每个s'' con- version character (unlike the fprintf(3) default which prints the entire string if the precision is unspecified). +o The conversion charactersh'‘、l'',n'’、p'' andq'‘的字节计数或字段精度。+o支持C stan- dard中描述的单字符转义序列: NUL \0 \a \b \f \n \r \t \v。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-13 14:20:38

这种行为实际上是一个固定的,不久以前,bug。对于受影响的版本,有一个解决办法:只需将前面的反斜杠放入单独的格式字符串即可。

例如,您想要的代码如下所示:

代码语言:javascript
复制
echo -n xyz | hexdump -e '"\t" 1/1 "%x"'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34145188

复制
相关文章

相似问题

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