convertion byte - Java - Programmation
Marsh Posté le 11-01-2008 à 22:44:11
ReplyMarsh Posté le 01-02-2008 à 18:01:46
Les byte sont signés en Java! (valeur de -128 à 127 et non de 0 à 255).
Si tu veux afficher les bytes selon l'interprétation non signée, il faut afficher: (byteX & 255) pour tronquer les bits du signe négatif.
Sinon un "byte" n'est pas un bit. le résultat de ~0 est -1 (et non 1). Si tu veux ne garder qu'un seul bit, il faut utiliser: (~byteX)&1 et non (~byteX) seulement... Mais tu peux masquer ces bits en excédent dans le résultat de ton println uniquement sans modifier ta fonction de "calcul".
Marsh Posté le 10-01-2008 à 21:28:06
bonsoir ,j'ai 1 programme qui me donne au lieu de 0 et 1 des -1 et-2 et je crois que c 1 probléme de transtipage mais je n'arrive pas à le regler
le programme est celuila:
public class Decodeur {
private byte f0;
private byte f1;
private byte s1;
private byte s2;
private byte s3;
private byte s4;
public Decodeur(){
f0=0;
f1=0;
}
public Decodeur(byte f1,byte f2){
this.f1=f1;
this.f0=f0;
}
public void setF0(byte f0){
this.f0=f0;
}
public byte getF0(){
return f0;
}
public void setF1(byte f1){
this.f1=f1;
}
public byte getF1(){
return f1;
}
public void setS1(byte s1){
this.s1=s1;
}
public byte getS1(){
return s1;
}
public void setS2(byte s2){
this.s2=s2;
}
public byte getS2(){
return s2;
}
public void setS3(byte s3){
this.s3=s3;
}
public byte getS3(){
return s3;
}
public void setS4(byte s4){
this.f0=f0;
}
public byte getS4(){
return s4;
}
public void calculerSortie(){
s1=(byte)((~f0)&(~f1));
s2=(byte)((~f0)&(f1));
s3=(byte)((f0)&(~f1));
s4=(byte)((f0)&(f1));
}
}
et son teste :
public class T{
public static void main (String[]args){
Decodeur Dr=new Decodeur();
Dr.setF0((byte)0);
Dr.setF1((byte)1);
Dr.calculerSortie();
System.out.println ("la premiére sortie est"+Dr.getS1());
}
}
et le resultat de teste c:
la premiére sortie est-2
Exit code: 0
No Errors