如何从/dev/urandom输出移除字节?及过滤/dev/random的0xFF后发至串口
从随机设备输出中移除指定字节的解决方案
问题1:如何从/dev/urandom的输出中移除指定字节?
用tr命令就能实现,它支持直接删除指定十六进制值的字节。示例命令如下:
# 移除0x41(对应ASCII字符'A') tr -d '\x41' < /dev/urandom > output_file
如果需要移除多个字节,只需在参数里追加对应的十六进制表示:
# 同时移除0x41和0x42 tr -d '\x41\x42' < /dev/urandom > output_file
问题2:剔除/dev/random中的0xFF字节并发送到串口
你的管道思路完全可行,用tr工具替代你设想的remove_byte即可,直接执行以下命令:
tr -d '\xFF' < /dev/random > /dev/ttyUSB0
该命令会实时读取/dev/random的输出,过滤掉所有值为0xFF的字节,再将处理后的数据写入串口设备/dev/ttyUSB0。
如果需要更复杂的过滤逻辑,也可以用awk实现(性能略低于tr,适合特殊场景):
awk '{for(i=1;i<=length;i++){c=substr($0,i,1);if(c!="\xff")printf "%s",c}}' < /dev/random > /dev/ttyUSB0
内容的提问来源于stack exchange,提问作者fdamien12
相关产品推荐
相关产品推荐

