linux字符串转为二进制,Linux printf将十进制转换为二进制?

不,C

printf

没有二进制格式的格式修饰符(

http://www.cplusplus.com/reference/cstdio/printf/

),以及linux util

也没有扩展它

%b

). 这个

打印

工具可能仍然被您的特定shell所覆盖,它最终可能会添加更多格式化程序,然后您必须检查shell的手册(例如

bash does extend it somewhat

,但仍然没有“二进制”格式化程序)。

Linux printf还能做什么(数字转换)?

十六进制到十进制?十六进制到八进制?从十六进制到二进制?

0xN

对于十六进制输入,以及

0N

$ printf "%d %d %#x %#o\n" 0x10 010 16 8

16 8 0x10 010

所以是的,通过使用所需的输入格式和输出格式,基本上可以将decimal/hex/octal转换为decimal/hex/octal,任何组合。

实际上你有点想错了,它是单独的输入到二进制转换,二进制到输出,即当你把“16”作为printf的参数值时,它作为字符串传递给工具,然后它将逐值解析字符串,检测到“16”是十进制格式,将其转换为本机整数值16(即CPU中的二进制),然后它将根据格式字符串中的格式说明符将其转换回字符串,即“%#x”将生成该内部(二进制)整数值(“0x10”)的十六进制格式。

如果你想让自己的“二进制”输出检查值,经验丰富的程序集程序员不必费心,他们会学习每一个单独的位读十六进制,因为在十六进制中,每个位都是由4位(0000=0x0,0001=0x1,…)组成的。。。,1110=0xE,1111=0xF),因此通过使用十六进制格式,您可以很容易地读取您感兴趣的任何特定位。虽然真正的二进制输出可以通过直接显示0/1来简化一点,但是对于32位和64位的值,它太长了一点,并且很难保持位置感知,但是这个部分在十六进制中稍微简单一些(因为每两个数字都是8位=一个字节)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值