echo '0A'
tạo ra ba ký tự : 0 A NL; xxd -b
sau đó sẽ in ba ký tự đó thành nhị phân. Nếu bạn chỉ muốn một byte duy nhất có giá trị là 10 (tức là thập lục phân A
), bạn có thể viết (bằng bash):
echo -n $'\x0A'
^ ^ ^
| | |
| | +-- `\x` indicates a hexadecimal escape
| +----- Inside a $' string, escapes are interpreted
+------- -n suppresses the trailing newline
Một sự thay thế tốt hơn sẽ là printf '\x0A'
; printf diễn giải các chuỗi thoát trong chuỗi định dạng và không xuất ra các dòng mới. (Đây là giải pháp tương thích Posix, sẽ hoạt động trên mọi vỏ tương thích Posix.) Tuy nhiên, một khả năng bash khác là echo -n -e '\x0A'
; -e
cờ (không chuẩn) yêu cầu echo để giải thích các chuỗi thoát.
echo '1' | xxd -b
sẽ không xuất ra số tương đương với hex 50
, vì xxd
không biết đó 0A
là số hex và 1
không. Ngoài ra, mã ascii cho ký tự 1
là hex 31
, không 50
.
Endianness không ảnh hưởng đến byte. Thứ tự của các bit bên trong một byte là hoàn toàn theo khái niệm cho đến khi byte được truyền qua một chuỗi nối tiếp và thậm chí sau đó nó chỉ hiển thị với một máy hiện sóng hoặc một cái gì đó tương tự.
50
. Đó là một lỗi đánh máy. Sửa lỗi ngay bây giờ