Ich versuche, mein C++ - Projekt in Java zu portieren. Nach der Zeile muss ich einige Bytes von der seriellen Schnittstelle lesen und zwei Bytes zu kurz kombinieren. Die Dinge arbeiten elegant mit unter dem Code.Kombinieren Sie zwei Bytes (ein positives und ein anderes negatives) zu kurz in Java
ByteBuffer bb = ByteBuffer.allocate(2);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put(b1);
bb.put(b2);
result = bb.getShort(0);
In C++ Projekt statt kurz haben sie unsigned kurz (in Java haben wir nicht vorzeichenlos).
So my above logic result does not align with C++ result for below case:-
b1 = 106 , b2 = -1 c++ result = 150 and java = -150
b1 =-6, b2 = -1 506 in VC++ but -6 in java
However, if only first byte is negative then my result are similar :
b1 = -12 , b2 = 1 c++ result = 500 and java = 500
Ich möchte mein Ergebnis mit C++ ausrichten. Anregungen und Hilfe wären sehr willkommen.
Was genau willst du? Ihr C++ kombiniert eindeutig NICHT zwei Bytes, aber das Java macht das richtig. Wir können nicht sagen, wie man das Java macht, wenn wir die C++ - Logik nicht kennen. – ElderBug
@ElderBug in C++ sie sind zwei Bytes in unsigned Kurz kombinieren, aber in Java Short ist unterzeichnet ... ist das der Grund für diese Diskrepanz im Ergebnis? –
Das C++ kombiniert NICHT zwei Bytes zu unsigned short. Zumindest nicht auf die offensichtliche Art und Weise. Es gibt eine Logik, die du nicht gezeigt hast. – ElderBug