Linux下Bash的echo命令能否发送无符号整数而非仅字符?
在Bash中发送原始字节值(而非ASCII字符)到设备驱动
没问题,我完全懂你想要的效果——直接把十六进制0x01对应的字节(十进制1)写入设备,而不是字符'1'的ASCII码(十进制49)。下面给你几个靠谱的实现方法:
方法1:用
echo的转义序列
Bash的echo本身可以通过-e选项启用转义字符解析,再搭配-n避免自动添加换行符(不然会多写一个换行字节进去)。要发送十六进制0x01,直接用:echo -ne '\x01' > /dev/LED这里的
\x前缀表示后面跟的是十六进制字节值,\x01就对应你要的原始字节1。方法2:用
printf(更推荐)
不同系统或Bash版本的echo行为可能略有差异,而printf的跨平台一致性更好,处理二进制数据也更可靠。实现同样的需求只需:printf '\x01' > /dev/LED如果你要发送其他十六进制值,比如
0xAB,直接把\x01换成\xAB就行,非常直观。方法3:八进制转义写法
除了十六进制,也可以用八进制转义来表示字节,0x01对应的八进制是001,所以命令可以写成:echo -ne '\001' > /dev/LED
这些方法都能直接把原始的无符号整数字节写入你的设备驱动.write函数,不用再在驱动里做ASCII字符的转换啦~
内容的提问来源于stack exchange,提问作者Leos313
相关产品推荐
相关产品推荐

