suma bajtow

0

Mam tablicę,

byte[] is = {60,-4,29,22}; // w hex 3CFC1D16 = 1023155478

jestem kiepski z liczenia bajtow, moze mi ktoś pomoże?
Jak wyliczyć int-a z tej tablicy ?

0

(is[0] << 24) | (is[1] << 16) | (is[2] << 8) | is[3]

0

big czy little endian :>?

0
bb napisał(a)

(is[0] << 24) | (is[1] << 16) | (is[2] << 8) | is[3]

Ten algorytm jest błędny.
Np. dla takich dwóch tablic: {-128,-67,120,-128} i {-128,-67,121,-128} jest ten sam wynik (-128).

Użyj zwykłego dodawania: (b0<<24) + (b1 << 16) + (b2 << 8) + b3

0

OK, dzieki

(is[0]<<24) + ((is[1]) << 16) + (is[2] << 8) + is[3]; zwraca mi 1006378262

Docelowo musi być tak.

(is[0]<<24) + ((is[1]&0xff) << 16) + (is[2] << 8) + is[3]; 1023155478 i wtedy jest ok

0

Ten algorytm jest równie błędny. Maskuj bity:
is[0] << 24 & 0xff000000 | is[1] << 16 & 0xff0000 | is[2] << 8 & 0xff00 | is[3] & 0xff

1 użytkowników online, w tym zalogowanych: 0, gości: 1