Mam unsigned long w javascript, który próbuję przekonwertować na tablicę bajtów (8 bajtów oczywiście przez długi czas). Oto, co mam do tej pory:
var deviceId = parseFloat("353268001238563");
var bytes = new Array(7);
for(var k=0;k<8;k++) {
bytes[k] = value & (255);
value = value >> 8
}
return bytes;
Niestety wygenerowane bajty są niepoprawne. Masz pojęcie, co robię źle?
Odpowiedzi:
2 dla odpowiedzi № 1The >>
operator nie wydaje się działać z wartościami, które nie mogą być reprezentowane w zwykłej 32-bitowej liczbie całkowitej ze znakiem, ponieważ będzie ona zawijana.
Rozwiązaniem typu hack może być użycie zwykłego podziału zamiast przesunięcia bitowego:
value = value / 256;