Hey,
Ich habe einen Inputstream der in ein Byte-Array schreibt. Dieses ist nun signed, also im Bereich -127 bis 127. Da das ntürlich absoluter Nonsense und unbrauchbar für die weitere Verarbeitung ist, muss es in unsigned gewandelt werden. Desweiteren soll danach noch eine Konvertierung in Dezimal und Binär vorgenommen werden. Ich hab mich dazu schon mal im internet und dem Forum schlau gemacht und was zusammengeschrieben, leider ohne nennenswerten erfolg.
Asugabe sieht unter Anderem so aus:
Das ergebnis ist so natürlich nicht korrekt. Nun ist erstmal natürlich die Frage, warum das mit der Konvertierung von signed nach unsigned nicht und dann, wenns dann nicht funzt, das mit der Konvertierung in die anderen Darstellungsformen.
Danke schonmal!!
Ich habe einen Inputstream der in ein Byte-Array schreibt. Dieses ist nun signed, also im Bereich -127 bis 127. Da das ntürlich absoluter Nonsense und unbrauchbar für die weitere Verarbeitung ist, muss es in unsigned gewandelt werden. Desweiteren soll danach noch eine Konvertierung in Dezimal und Binär vorgenommen werden. Ich hab mich dazu schon mal im internet und dem Forum schlau gemacht und was zusammengeschrieben, leider ohne nennenswerten erfolg.
Code:
void serialPortDatenVerfuegbar() {
try {
byte[] signeddata = new byte[10];
byte[] unsigneddata = new byte [10];
int num;
BigInteger bi;
String s;
while(inputStream.available() > 0) {
num = inputStream.read(signeddata , 0, signeddata.length);
System.out.println("Empfange Signed: "+ new String(signeddata, 0, num));
for (int z=0; z < num; z++)
{
// System.out.println("Byte"+(z+1)+": "+signeddata[z]);
// System.out.println("Byte"+(z+1)+": "+(signeddata[z]& 0xFF));
unsigneddata[z]=(byte)(signeddata[z]& 0xFF);
}
bi = new BigInteger(unsigneddata);
System.out.println("Binary: "+ (s = bi.toString(2)));
System.out.println("Decimal: "+ (s = bi.toString()));
s = bi.toString(16); // 120ff0
if (s.length() % 2 != 0) {
// Pad with 0
s = "0"+s;
}
System.out.println("Hexadezimal: "+ s);
System.out.println("Empfange Unsigned: "+ new String(unsigneddata, 0, num));
}
} catch (IOException e) {
System.out.println("Fehler beim Lesen empfangener Daten");
}
}
Asugabe sieht unter Anderem so aus:
Code:
Empfange Signed: ó™‚E¹3Wÿ
Binary: -1100011001100111110110111010010001101100110010101000111010100000000100000000
Decimal: -58559025321399347183872
Hexadezimal: -c667dba46cca8ea0100
Empfange Unsigned: ó™‚E¹3Wÿ
Das ergebnis ist so natürlich nicht korrekt. Nun ist erstmal natürlich die Frage, warum das mit der Konvertierung von signed nach unsigned nicht und dann, wenns dann nicht funzt, das mit der Konvertierung in die anderen Darstellungsformen.
Danke schonmal!!