Mam specyfikację, która odczytuje kolejne dwa bajty są podpisane int.jak odczytać podpisane int z bajtów w java?
Aby dowiedzieć się, że w Javie Mam następujący
Kiedy czytam podpisanego int w Java przy użyciu następującego kodu otrzymuję wartość 65449
logiki obliczania unsigned
int a =(byte[1] & 0xff) <<8
int b =(byte[0] & 0xff) <<0
int c = a+b
Wierzę, że to jest złe, ponieważ jeśli ja i z 0xff otrzymam niepodpisany odpowiednik
, więc usunąłem 0xff 0xi logika, jak podano poniżej
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
ja próbuje zrównoważyć te wartości z okazji spec brzmi ale to wygląda wrong.Since wielkość sterty robi wchodzą w to.
Która z metod jest odpowiednia do obliczania int w java?
Oto jak spec idzie
somespec() { xtype 8 uint8 xStyle 16 int16 }
xStyle: liczba całkowita ze znakiem, który reprezentuje przesunięcie (w bajtach) od początku tego Widget() strukturę początku struktury xStyle(), która wyraża odziedziczonej style zdefiniowane przez widget strony, a także style, które mają zastosowanie do tego widgetu.
Czy możesz pokazać przykład wejścia i pożądany wynik? nie jest jasne .. – MByD
Przeczytałem to ze strumienia przy użyciu specyfikacji. Odczytuję dwa bajty zgodnie ze specyfikacją i wartościami, gdy czytam w tablicy bajtów po przekonwertowaniu na poszczególne bajty są: bajt [1] = - 1 i bajt [0] = - 87 mówią w tablicy bajtów zawierającej dwa bajty. Specyfikacja oznacza te dwa bajty jako podpisane int i nie wiem, co jest poprawnym wyjściem. – Siva