L'affectation à un tableau d'octets en Java
J'ai un tableau d'octets, je veux affecter comme suit:
- Premier octet indique la longueur de la chaîne:
(byte)string.length()
- De la 2e à la Dernière octets contiennent des données de chaîne de
string.getBytes()
Autres que d'utiliser une boucle for, il est un moyen rapide pour initialiser un tableau d'octets à l'aide d'octets à partir de deux variables différentes?
Pouvez-vous garantir que vos chaînes seront toujours < 256 caractères (128 si vous ne vous occupez pas de bit de signe)?
Oui, je peux, et pouvez-vous élaborer sur la façon de traiter avec le bit de signe?
Octets en Java sont des valeurs signées. Lors de la conversion d'un
Bernrose - vraiment? ainsi, le JLS est le problème? java.sun.com/docs/books/jls/third_edition/html/...
Oui, je peux, et pouvez-vous élaborer sur la façon de traiter avec le bit de signe?
byte
est un type non signé en Java.Octets en Java sont des valeurs signées. Lors de la conversion d'un
int
, ils vont être signe étendu. Donc, vous avez à masquer le signe étendu valeur pour obtenir l'intervalle 0..255: b & 0xFF
Bernrose - vraiment? ainsi, le JLS est le problème? java.sun.com/docs/books/jls/third_edition/html/...
OriginalL'auteur fredley | 2011-01-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
System.arrayCopy()
pour copier des octets:Mais à l'aide de quelque chose comme un
ByteArrayOutputStream
ou unByteBuffer
comme d'autres personnes ont suggéré est probablement un nettoyant approche et sera mieux pour votre dans le long terme 🙂(0xFF & ...)
opération est complètement superflu pour aller À un octet. Le(byte)
cast tronque de la même manière. C'est seulement lors du retour d'un nombre entier que vous vous souciez.Ok, accordée. Je pensais, une meilleure sécurité, puis désolé, droit? 😉
OriginalL'auteur Guss
Comment sur
ByteBuffer
?Exemple :
byte
. Deuxièmement, il faut utiliser la variante deString.getBytes()
qui prend un jeu de caractères.d'accord avec vos commentaires +1 🙂 @fredley si vous prenez soin de ce
Il serait bien d'inclure le code pour obtenir ce que l'OP a demandé: un tableau d'octets.
OriginalL'auteur Jigar Joshi
Tout
ByteBuffer
est généralement la meilleure façon de construire des tableaux d'octets, compte tenu de l'OP objectifs, je pense que la suite sera plus robuste:OriginalL'auteur Anon
Comment sur
ByteArrayOutputStream
?OriginalL'auteur Brian Topping