Ho una specifica che legge i prossimi due byte sono firmati int.come leggere l'int firmato da byte in java?
leggere che in Java ho le seguenti
Quando leggo un int firmato in Java utilizzando il seguente codice ottengo un valore di 65449
logica per il calcolo di unsigned
int a =(byte[1] & 0xff) <<8
int b =(byte[0] & 0xff) <<0
int c = a+b
Credo che questo sia sbagliato perché se io e con 0xff ottengo un equivalente senza segno
così ho rimosso il & 0xff e la logica, come riportato qui di seguito
int a = byte[1] <<8
int b = byte[0] << 0
int c = a+b
which gives me the value -343
byte[1] =-1
byte[0]=-87
ho cercato di compensare questi valori con il modo in cui le specifiche legge, ma questo sembra wrong.Since la dimensione del mucchio doesnt rientrano in questa.
Qual è il modo giusto di fare per il calcolo int firmato in java?
Ecco come le specifiche va
somespec() { xtype 8 uint8 xStyle 16 int16 }
Xstyle: Un intero con segno che rappresenta una struttura di offset (in byte) dall'inizio di questo Widget() per l'inizio di una struttura Xstyle() che esprime ereditato stili definiti per widget di pagina e stili che si applicano specificamente a questo widget.
Puoi mostrare un esempio di input e il risultato desiderato? non è chiaro .. – MByD
ho letto questo da uno stream utilizzando una specifica. Ho letto i due byte come da specifica e i valori letti in un array di byte quando convertiti in singoli byte sono byte [1] = - 1 e byte [0] = - 87 dicono in un array di byte contenente due byte. La specifica contrassegna questi due byte come firmati int e non so quale sia l'output corretto. – Siva