2017-02-21 4 views

Répondre

3

Est-ce que 1 est trop grand pour être stocké dans 2 octets?

Eh bien, un int est ... putInt écrit toujours 4 octets. De l'documentation for ByteBuffer.putInt

Lancers:

BufferOverflowException - S'il y a moins de quatre octets restants dans ce tampon

Si vous voulez seulement mettre un nombre entier de deux octets, utilisez putShort à la place. Si vous souhaitez stocker des données dans un encodage à largeur variable (où l'espace utilisé dépend de la valeur), vous devrez probablement écrire le code vous-même.

1

De javadoc du procédé putInt:

Ecrit quatre octets contenant la valeur d'int donnée, dans l'ordre des octets de courant, dans ce tampon à la position actuelle, et incrémente alors la position par quatre

Vous seulement 2 octets alloué de sorte que le BufferOverflowException:

Exception non contrôlée levée lorsqu'une opération relative atteint la limite du tampon cible.

Vous pouvez résoudre expading à 4 octets le tampon ou à l'aide putShort qui utilisent seulement 2 octets pour stocker le numéro 1.

1

ByteBuffer.putInt(1) met une valeur entière dans le tampon. Un entier a une longueur de 4 octets (32 bits).