You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让mosquitto_sub显示二进制消息时为字节添加间隔?

解决mosquitto_sub二进制消息字节间添加空格的问题

问题描述

使用mosquitto_sub的%x格式符输出二进制消息时,字节之间无分隔空格,输出示例:

paul@desktop:~$ mosquitto_sub -t out -F '%x' -v
3031320033340035
3031320033340035

尝试用%3x格式符实现字节分隔,结果却出现消息截断:

paul@desktop:~$ mosquitto_sub -t out -F '%3x'
 30
 30

目标是得到每个十六进制字节用空格分隔的输出,例如:30 31 32 00 33 34 00 35

解决方案

mosquitto_sub的内置格式符不支持直接为十六进制字节添加空格,可通过管道结合文本处理工具实现:

方法1:用sed处理连续十六进制字符串

将%x输出的无空格十六进制串,每两个字符后插入空格,再移除行尾多余空格:

mosquitto_sub -t out -F '%x' | sed 's/../& /g; s/ $//'

方法2:用awk逐字节截取格式化

通过循环遍历字符串,每两个字符截取一次并添加空格:

mosquitto_sub -t out -F '%x' | awk '{for(i=1;i<=length($0);i+=2) printf "%s ", substr($0,i,2); print ""}'

保留主题信息的版本

如果需要同时显示消息主题(对应原命令的-v参数效果),可以用以下命令:

mosquitto_sub -t out -v | awk '{split($0, arr, " "); printf "%s ", arr[1]; for(i=1;i<=length(arr[2]);i+=2) printf "%s ", substr(arr[2],i,2); print ""}'

内容的提问来源于stack exchange,提问作者Paul Jurczak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 17:41:13