Вычисление шестнадцатеричных байтов из Java в JavaScriptJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Вычисление шестнадцатеричных байтов из Java в JavaScript

Сообщение Anonymous »

При попытке преобразовать приведенный ниже код Java в JavaScript возникает несоответствие, результат немного отличается.

Код: Выделить всё

byte ex[] = new byte[26];
bits = 304;
for (int loop=0; loop>(loop*8)));
System.out.println("Ex value: " + ex[ex.length-1-loop]);
}
Вывод в консоль:

Код: Выделить всё

Ex value: 48
Ex value: 1
Ex value: 0
Ex value: 0
Ex value: 0
Ex value: 0
Ex value: 0
Ex value: 0
JavaScript

Код: Выделить всё

var ex = new Int8Array(26);
var bits = 304;
for (var loop = 0; loop < 8; ++loop) {
ex[ex.length - 1 - loop] = (0xFF & (bits >> (loop * 8)));
console.log("Ex value: " + ex[ex.length-1-loop]);
}
Вывод в консоль:

Код: Выделить всё

> "Ex value: 48"
> "Ex value: 1"
> "Ex value: 0"
> "Ex value: 0"
> "Ex value: 48"
> "Ex value: 1"
> "Ex value: 0"
> "Ex value: 0"
Вы можете увидеть ошибочные 48 и 1 в JavaScript. Java работает так, как ожидалось, мне нужен JS, чтобы соответствовать этому.
Для ошибочных вычислений цикл равен 4 (для 48) и 5 ​​(для 1). Оба должны быть равны нулю.
При этом я снова попробовал Java, не присваивая значение массиву, и получил ТАКОЕ ЖЕ, что и JavaScript. Я не могу понять, почему присвоение его массиву байтов имеет значение:

Код: Выделить всё

byte c = (byte)(0xFF&(304>>(4*8)));
int d = (byte)(0xFF&(304>>(5*8)));
System.out.println("c: " + c);
System.out.println("d: " + d);
Вывод:

Код: Выделить всё

c: 48
d: 1
Изменить
Я нырнул еще немного и обнаружил то, что происходит, см. шестнадцатеричный расчет Java. Когда решение будет найдено, я удалю один из этих вопросов.


Подробнее здесь: https://stackoverflow.com/questions/532 ... javascript
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»