Zobacz Array#pack.
[1024].pack("n")
to zestawy numer jak sieć rzędu sekwencja bajtów \x04\x00
.
Sposób działania polega na tym, że każdy bajt składa się z 8 bitowych bitów. 1024 w systemie binarnym to 10000000000
. Jeśli podzielimy to na oktety 8 (8 bitów na bajt), otrzymamy: 00000100 00000000
.
Bajt może reprezentować (2 stany)^(8 pozycji) = 256 unikatowych wartości. Ponieważ jednak nie mamy 256 znaków drukowalnych, możemy wizualnie przedstawić bajty jako pary heksadecymalne, ponieważ cyfra szesnastkowa może reprezentować 16 różnych wartości i 16 * 16 = 256. W ten sposób możemy pobrać pierwszy bajt, 00000100
i przerwać na dwa heksadecymalne kwadraty jako 0000 0100
. Tłumaczenie pliku binarnego na szesnastkowy daje nam 0x04
. Drugi bajt jest banalny, ponieważ 0000 0000
to 0x00
. To daje nam naszą szesnastkową reprezentację dwubajtowego ciągu znaków.
Warto zauważyć, że ponieważ jesteś ograniczony do 2-bajtowego (16-bitowego) nagłówka, jesteś ograniczony do maksymalnej wartości 11111111 11111111
lub 2^16 - 1 = 65535
bajtów. Każda większa wiadomość nie może dokładnie reprezentować jej długości w dwóch bajtach.