Я хочу отправить один номер через netcat. Я хочу отправить не ASCII-представление числа, а двоичную версию числа (uint8, int32 и т. д.). У меня есть порт UDP, открытый в Matlab, который ожидает получения номера. dsp.UDPReceiver в Matlab может принимать только [ 'uint8' (по умолчанию) | 'двойной' | 'одиночный' | 'int8' | 'int16' | 'uint16' | 'int32' | 'uint32' | «логический». К вашему сведению, я отправляю целые числа через 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?

0
Michael 7 Янв 2022 в 01:48

1 ответ

Лучший ответ

С опцией -e эхо поддерживает заданные байты как шестнадцатеричные или восьмеричные. С -n последняя новая строка подавляется:

echo -n -e '\x05' | netcat ...
0
Steffen Ullrich 7 Янв 2022 в 02:05
Бинго. Это работает отлично. Спасибо.
 – 
Michael
7 Янв 2022 в 02:16