Bonjour à tous,
Tout est dans le titre du topic, mais je tiens à vous donner quelques explications (en meme temps, c'est mieux pour avoir un avis :p)
Bon voici le contexte de mon problème.
Je lis un tableau depuis un automate et je le lis en byte. Pour une raison dont je me souviens pas, j'enregistre tous ces bytes dans un tableau de int (première incohérence dans ma réflexion).
J'ai ensuite créé une méthode qui me permet de convertir mes 2 bytes (reçu en int) en un entier.
Voici le code:
Bon je ne sais pas si cette méthode de conversion est la meilleure -surement pas car je n'aurai pas posté sinon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public static int convert2ByteStringToInteger(int Int1, int Int0) { String Byte1 = Integer.toHexString(Int1); if (Int1 == 0) { Byte1 += "0"; } String Byte0 = Integer.toHexString(Int0); if (Int0 == 0) { Byte0 += "0"; } return (int) Integer.decode("0x" + Byte1 + Byte0); }//enf of convert2ByteStringToInteger
Nous arrivons au problème.
Toutes mes conversions étaient bonnes sauf lorsque je recevais des valeurs négatives.
Par exemple, dans mon process automate, si j'envoie -9999 cela signifie que j'ai un défaut dans mon équipement.
Cependant, au lieu d'avoir -9999, j'obtiens la valeur 55537 qui il me semble est la valeur non signée.
Donc j'aimerai avoir quelques avis.
1- est ce que cette façon de convertir est bonne?
2- Est ce que si je lis mon tableau en byte que j'enregistre dans un tableau de byte au lieu de int, le problème pourrait s'arranger (je ne l'ai pas encore testé car mon automate est parti sur site...)
3- Est ce que j'ai plus de chance de réussir mes conversions en utilisant des masques?
Cordialement,
MustOne
Partager