通过 netcat 发送号码
Send number via netcat
我想通过netcat发送一个号码。我不想发送数字的 ASCII 表示形式,而是数字的二进制版本(uint8、int32 等)。我在 Matlab 中打开了一个 UDP 端口,它正在等待接收号码。 Matlab的dsp.UDPReceiver只能接受['uint8'(默认)| 'double' | 'single' | 'int8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'logical']。仅供参考,我正在通过 UDP 将整数发送到进程以控制其中的某些操作。
我最初尝试过
echo 5 | netcat -u localhost 12345
但是接收器(在 Matlab 中)打印出 ans = uint8 53
因为 echo
的输出是字符串而不是数字 5 的二进制表示。我试过像这样使用 bc
:
echo "obase=2;5" | bc -l|netcat -u localhost 12345
但得到结果 ans = uint8 49
因为 bc
返回二进制的 ASCII 版本而不是位本身。
如何通过netcat发送单个号码?
使用选项 -e
echo 支持给定字节为十六进制或八进制。使用 -n
最后的换行符被抑制:
echo -n -e '\x05' | netcat ...
我想通过netcat发送一个号码。我不想发送数字的 ASCII 表示形式,而是数字的二进制版本(uint8、int32 等)。我在 Matlab 中打开了一个 UDP 端口,它正在等待接收号码。 Matlab的dsp.UDPReceiver只能接受['uint8'(默认)| 'double' | 'single' | 'int8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'logical']。仅供参考,我正在通过 UDP 将整数发送到进程以控制其中的某些操作。
我最初尝试过
echo 5 | netcat -u localhost 12345
但是接收器(在 Matlab 中)打印出 ans = uint8 53
因为 echo
的输出是字符串而不是数字 5 的二进制表示。我试过像这样使用 bc
:
echo "obase=2;5" | bc -l|netcat -u localhost 12345
但得到结果 ans = uint8 49
因为 bc
返回二进制的 ASCII 版本而不是位本身。
如何通过netcat发送单个号码?
使用选项 -e
echo 支持给定字节为十六进制或八进制。使用 -n
最后的换行符被抑制:
echo -n -e '\x05' | netcat ...