首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使十六进制不等待16个字符从stdin显示他们的十六进制值?

如何使十六进制不等待16个字符从stdin显示他们的十六进制值?
EN

Unix & Linux用户
提问于 2017-11-04 05:24:18
回答 2查看 4.1K关注 0票数 10

如果我在终端中不带任何参数地打开hexdump

代码语言:javascript
复制
hexdump

当我在终端中键入某些内容并按Enter时,hexdump将显示我键入的任何字符的十六进制值。

但是,只有当我键入16个字符时,hexdump才会显示十六进制值,例如:

在这里,我输入了字符a 15次,然后按了Enter(因此hexdump接收了16个字符(15a + \n))。

但是,如果我键入的字符少于16个,例如:

在这里,我输入了字符a 14次,然后按了Enter(因此hexdump接收了15个字符(14个a+ \n))。在这种情况下,hexdump没有显示任何东西。

我是否可以让hexdump显示它接收到的字符长度的十六进制值,而不是等待16个字符的接收?

注意:我不想“为十六进制和xxd同时使用选项,以一行十六进制显示一个字节”(如这里的注释中所建议的)。我想要做的基本上是,例如,知道什么十六进制值的A,而不必键入额外的15个字符才能得到它。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2017-11-04 09:09:33

试试hexdump -v -e '/1 "%02X\n"'。这将显示一行一个十六进制字节,因此行输出缓冲区不会阻止该行的显示。

然后您只需键入A并返回以知道A的十六进制值,您仍然必须键入return,因为shell缓冲区也会对输入执行行缓冲。

man ascii也能工作。:-)

票数 3
EN

Unix & Linux用户

发布于 2020-12-14 14:50:59

可以将未缓冲的十六进制写入同一行到stdbuf。Bash示例(由于某些读取命令选项而需要它):

代码语言:javascript
复制
while read -s -n1 k; do printf $k; done | stdbuf -o0 hexdump -e '1/1 "%x"'
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/402452

复制
相关文章

相似问题

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