Votre tableau est de byte
des primitives, mais vous essayez d'appeler une méthode sur elles.
Vous n'avez pas besoin de faire quoi que ce soit d'explicite pour convertir un fichier byte
à un int
juste :
int i=rno[0];
...puisque ce n'est pas un downcast.
Notez que le comportement par défaut de byte
-to- int
La conversion consiste à conserver le signe de la valeur (rappelez-vous byte
est un type signé en Java). Ainsi, par exemple :
byte b1 = -100;
int i1 = b1;
System.out.println(i1); // -100
Si vous pensiez à la byte
comme non signé (156) plutôt que signé (-100), à partir de Java 8 il y a Byte.toUnsignedInt
:
byte b2 = -100; // Or `= (byte)156;`
int = Byte.toUnsignedInt(b2);
System.out.println(i2); // 156
Avant Java 8, pour obtenir la valeur équivalente dans le fichier int
il faudrait masquer les bits de signe :
byte b2 = -100; // Or `= (byte)156;`
int i2 = (b2 & 0xFF);
System.out.println(i2); // 156
Juste pour être complet, n°1 : Si vous a fait veulent utiliser les différentes méthodes de Byte
pour une raison quelconque ( vous n'avez pas besoin d'être ici ), vous pouvez utiliser un conversion à la boxe :
Byte b = rno[0]; // Boxing conversion converts `byte` to `Byte`
int i = b.intValue();
Ou le Byte
Constructeur :
Byte b = new Byte(rno[0]);
int i = b.intValue();
Mais encore une fois, vous n'avez pas besoin de ça ici.
Juste pour être complet #2 : Si cela étaient (par exemple, si vous essayiez de convertir une int
a un byte
), tout ce dont vous avez besoin, c'est d'un plâtre :
int i;
byte b;
i = 5;
b = (byte)i;
Cela permet au compilateur de savoir que vous savez qu'il s'agit d'un downcast, ce qui évite l'erreur "Possible loss of precision".
1 votes
Il y a une différence entre octet et byte. Ce dernier est un objet, qui supporterait la fonction
.intValue()
méthode. La première est la valeur brute de l'octet et il suffit de l'assigner comme suitint i = rno[0];
1 votes
Voir aussi stackoverflow.com/questions/2383265/conversion-4-octets-à-int