Meilleur methode pour recuperer un short dans un tableau de byte - Java - Programmation
Marsh Posté le 25-04-2003 à 15:16:52
si tu veux le rajouter au début, t'as pas trop le choix : faut en créer un nouveau de taille n+1, mettre ton (byte) short au début et faire une copie du reste.
pour faire une copie de tableau de façon optimale, il faut se servir de System.arrayCopy()
Marsh Posté le 25-04-2003 à 15:22:36
au fait, pour récupérer ton short, tu as juste à faire un (short) tonTableau[0]
Si tu as le choix, essaye d'utiliser une autre structure qu'un tableau ... une linkedList pourrait être plus efficace si tu as bcp d'ajout ou de retrait à faire en début.
Marsh Posté le 25-04-2003 à 15:28:04
benou a écrit : si tu as bcp d'ajout ou de retrait à faire en début. |
Tu peux aussi mettre ta liste à l'envers et faire ces rajouts à la fin (ca devient une pile dans ce cas)
Marsh Posté le 27-04-2003 à 18:27:00
J'ai pas le choix pour le byte [] (c'est pour envoyer dans un datagramme UDP).
Mais si je met mon short dans mon tableau de byte (avec (byte)short), il va etre tronque non ...
Moi ce que je veux dire, c'est comment mettre puis récupérer un nombre 16 bits dans un tableau de byte.
Actuellement, j'utilise un byte. Il sert en fait d'identifiant pour le datagramme (numéro (quasi) unique). Alors 256 valeurs c'est trop peu.
Il me faut au moins un identifiant sur 16 bits, voire 32 (et pourquoi pas meme 64).
Alors comment mettre cet identifiant devant / à la suite des byte à envoyer, et comment le récupérer.
Et y-a-t-il un equivalent de sizeof en JAVA ?
Ou faut ke je continue à utiliser une variable SIZEOF_ID que j'initialise manuellement avec la taille (en octets) de l'id ?
Si vous avez une meilleure méthode pour attacher un id à un datagramme je suis preneur.
Le but est de pouvoir détecter une perte de datagramme et demander sa ré-expédition.
Si vous avez un lien sur la programmation avancée avec UDP (faire en somme ce que fait TCP : assurer l'arrivée des datagrammes et gérer leur ordre).
J'utilise UDP parce que on me l'a demandé (=> comparer TCP et UDP).
Merci.
Marsh Posté le 27-04-2003 à 19:49:08
pour transformer un short en tableau de byte, tu peux fire comme ca :
Code :
|
Marsh Posté le 27-04-2003 à 19:51:12
Tu prends ton short 16 bits que j'appelerais x.
Tu passes d'abord les bits de poids faible puis les poids forts (ou l'inverse c'est au choix) dans ton byte[] comme ceci :
byte bitsPoidsFaibles = (byte)(x&255);
ajouter bitsPoidFaibles a byte[]
byte bitsPoidsForts = (byte)((x>>8)&255);
ajouter bitsPoidsForts a byte[]
Pour le recupere ensuite tu fait l'inverse
x = (short)(bitsPoidsFaibles&255) + (short)((bitsPoidsForts<<8)&255)
Marsh Posté le 27-04-2003 à 19:57:28
ReplyMarsh Posté le 28-04-2003 à 17:30:16
Ok. Donc faut le faire a la main comme je le pensais.
Bon j'avais un peu la flemme, mais avec votre code j'ai plus d'excuses.
Merci.
Marsh Posté le 28-04-2003 à 20:13:03
HelloWorld a écrit : Salut, comment insérer puis récupérer un short (ou int ...) dans un byte [] et le récupérer ensuite. |
vous avez remarqué le jeu de mots dans le titre ?
Marsh Posté le 28-04-2003 à 20:18:34
airseb a écrit : |
c nul
Marsh Posté le 28-04-2003 à 20:25:30
Citation : sujet: Meilleur methode pour recuperer un Short dans un tableau de Byte |
Utiliser des containers non typé ?¿?
Ça marche aussi pour récupérer des pantalons dans des tableaux de chaussures.
..... mouais, je suis un peu fatigué ajourd'hui ......
Marsh Posté le 28-04-2003 à 20:42:04
airseb a écrit : |
ouais.
c'est dingue on arrive à mettre que 2 byte dans un short alors qu'on peut en mettre plein dans un String
Marsh Posté le 28-04-2003 à 20:43:28
benou a écrit : |
moi avec une seule c'est tout rempli
Marsh Posté le 28-04-2003 à 21:00:04
the real moins moins a écrit : moi avec une seule c'est tout rempli |
le String
Marsh Posté le 28-04-2003 à 21:04:47
benou a écrit : |
avec une seule byte oui
bon allez deux
Marsh Posté le 29-04-2003 à 00:25:52
benou a écrit : pkoi faire le &255 ? |
Le &255 est un masque binaire (un ET logique avec 0000000011111111) ce qui garantie que les bits de poids forts soit nuls. C'est pas absolument necessaire, mais c'est plutot une securité qui garantie que le cast de short en byte se passe bien (le premier bit de poids fort est un bit de signe).
Marsh Posté le 25-04-2003 à 15:10:47
Salut, comment insérer puis récupérer un short (ou int ...) dans un byte [] et le récupérer ensuite.
En fait, j'ai un byte [], et je souhaite lui insérer un short au debut, et le récupérer ensuite.
Comment faire cela proprement ?
De meme, comment fait on pour affecter un tableau (de byte par exemple) à un autre , (=> faire une copie, autrement que via un for)
Merci.
---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite