ich habe ein Byte-Array, was ich mit Werten fülle.
Code:
byte[] Data = new byte[3];
Data[0] = 10;
Data[1] = 20;
Data[2] = 250;
10 und 20 machen keine Probleme, aber da ein Byte ja nur bis 127 geht, machen die größeren Werte Probleme und ich erhalte ERROR:Value out of range. Value:"250" Radix:10
Gibt es da einen Trick, mit dem ich da Werte bis 250 reinbekomme? Mehr brauche ich nicht.
Also kann ich Java irgendwie mitteilen, dass er ein Byte von 0 bis 255 verarbeiten soll, anstatt von -128 bis 127?
Das Array muss leider ein Byte-Array bleiben, weil die spätere Methode einer Klasse auch ein Byte Array als Eingabe erwartet. Oder kann man da vielleicht beim Aufruf der Methode irgendwie tricksen?
Code:
public static long Write(byte[] pData)
Diese Methode/Klasse kann ich leider nicht ändern.
Da muss es doch ein Workaround geben.
Ich bin hier erst seit einem Tag an Java dran. Was machen Leute, die schon Jahre mit Java arbeiten?
Es gibt doch auch eine Menge Netzwerk Protokolle, die mit unsigned Bytes arbeiten. Alleine deswegen muss es doch sowas geben.
Habe ich keine Chance der Methode ein int unterzujubeln, wenn ein byte verlangt wird?
wieso willst du denn da ints (unsigned bytes) reinschieben, wenns eine methode ist, die ein bytearray (höchstwahrscheinlich signed) erwartet? die methode soll wahrscheinlich auch nur java-bytes erwarten. wenn du die klasse nicht ändern kannst, kannst du sie erweitern?
Das Problem ist, dass die Klasse auch nur ein byte erwartet, aber das USB-Gerät erwartet ein unsigned byte. Das USB-Gerät wurde nämlich eigentlich für .net entwickelt und da geht es ja von 0-255.
Du kannst
array = (byte)250;
machen. Beim Empfänger kommt dann zwar eine "negative Zahl" an, aber solange er die richtig interpretiert, ist's ja gut. Bits sind nur bits. Die haben keine inhärente Bedeutung.
Marco! You made my day
Manchmal ist es eben zu einfach um wahr zu sein
Ich hatte beim händischen Testen mit negativen Zahlen nicht bedacht, dass er -127 als 128 und -1 als Max-Wert nimmt.
Ich habe fälschlicherweise 0 als 128 angenommen und deswegen kam Unfug bei raus. Und deswegen bin ich auch davon ausgegangen, dass das USB Gerät mit negativen Werten nichts anfangen kann.
Also vielen Dank, Marco und danke auch für die anderen Antworten.