echo '0A'produz três caracteres 0 A NL:; xxd -bimprimirá esses três caracteres em binário. Se você quiser apenas o byte único cujo valor é 10 (ou seja, hexadecimal A), você pode escrever (em bash):
echo -n $'\x0A'
^ ^ ^
| | |
| | +-- `\x` indicates a hexadecimal escape
| +----- Inside a $' string, escapes are interpreted
+------- -n suppresses the trailing newline
Uma alternativa melhor seria printf '\x0A'; printf interpreta seqüências de escape na string de formato e não gera novas linhas implícitas. (Esta é a solução compatível com Posix, que deve funcionar em qualquer shell compatível com Posix.) Ainda outra possibilidade de bash é echo -n -e '\x0A'; o -esinalizador (não padrão) pede que o eco interprete as seqüências de escape.
echo '1' | xxd -bnão produzirá o equivalente a hex 50, porque xxdnão sabe que 0Aé um número hexadecimal e 1não é. Além disso, o código ascii para o caractere 1é hexadecimal 31, não 50.
Endianness não afeta bytes. A ordem dos bits dentro de um byte é inteiramente conceitual até que o byte seja transmitido por uma linha serial e mesmo assim seja visível apenas com um osciloscópio ou algo semelhante.
50. É um erro de digitação. Corrigindo agora #