echo '0A'производит три символа 0 A NL:; xxd -bзатем напечатает эти три символа в двоичном формате. Если вам нужен только один байт со значением 10 (то есть шестнадцатеричный A), вы можете написать (в bash):
echo -n $'\x0A'
^ ^ ^
| | |
| | +-- `\x` indicates a hexadecimal escape
| +----- Inside a $' string, escapes are interpreted
+------- -n suppresses the trailing newline
Лучшая альтернатива была бы printf '\x0A'; printf интерпретирует escape-последовательности в строке формата и не выводит неявные символы новой строки. (Это Posix-совместимое решение, которое должно работать на любой Posix-совместимой оболочке.) Еще одна возможность bash есть echo -n -e '\x0A'; (нестандартный) -eфлаг запрашивает эхо для интерпретации escape-последовательностей.
echo '1' | xxd -bне выведет эквивалент гекса 50, потому xxdчто не знает, что 0Aэто шестнадцатеричное число, а 1это не так. Кроме того, код ascii для символа 1является шестнадцатеричным 31, а не 50.
Порядковый номер не влияет на байты. Порядок битов внутри байта является полностью концептуальным, пока байт не передается по последовательной линии, и даже тогда он виден только с помощью осциллографа или чего-то подобного.
50. Это опечатка. Исправление это сейчас