Vedi Array#pack.
[1024].pack("n")
Questa pacchi il numero come la rete ordine sequenza di byte \x04\x00
.
Il modo in cui questo funziona è che ogni byte è 8 bit binari. 1024 in binario è 10000000000
. Se lo suddividiamo in ottetti di 8 (8 bit per byte), otteniamo: 00000100 00000000
.
Un byte può rappresentare (2 stati)^(8 posizioni) = 256 valori univoci. Tuttavia, poiché non abbiamo 256 caratteri stampabili in formato ASCII, rappresentiamo visivamente i byte come coppie esadecimali, poiché una cifra esadecimale può rappresentare 16 valori diversi e 16 * 16 = 256. Pertanto, possiamo prendere il primo byte, 00000100
e interrompere in due quad esadecimali come 0000 0100
. Traducendo binario in esadecimale ci dà 0x04
. Il secondo byte è banale, poiché 0000 0000
è 0x00
. Questo ci dà la nostra rappresentazione esadecimale della stringa a due byte.
Vale la pena notare che, poiché si è costretti ad un collettore 2-byte (16 bit), è limitato ad un valore massimo di 11111111 11111111
, o 2^16 - 1 = 65535
byte. Qualsiasi messaggio più grande di quello non può rappresentare con precisione la sua lunghezza in due byte.
fonte
2012-12-10 04:14:06