Показать сообщение отдельно
Старый 13.02.2012, 01:22   #31
Местный
 
Регистрация: 23.02.2009
Сообщений: 319
Сказал Спасибо: 72
Имеет 60 спасибок в 45 сообщенях
Kilatif пока неопределено
По умолчанию

Цитата:
Сообщение от Tin-moon Посмотреть сообщение
Спасибо, все-таки с С# переписывать удобнее

Падает на этой функции:
Код:
        private long S(long x, byte i)
        {
            byte[] bts = new byte[4];

            bts = BitConverter.GetBytes(x);
            return SBoxes[i, bts[3-i]];
        }
Проблема в чем: С# выдает {3, 169, 95, 79, 0, 0, 0, 0}, а ява {3, -87, 95, 79, 0,0,0,0}. Понятное дело что нет в массиве такого числа. Кто знает как эту проблему решить?
число 169 и -87 в двоичном представлении (и в шестнадцатеричном) в первом байте одно и тоже (169 = 0x000000A9; -87 = 0xFFFFFFA9), отличается только знаком. Скорее всего вся проблема в том что элементы твоего массива размером больше чем 1 байт, поэтому при чтении пакета и работы с однобайтовыми элементами, добавляются FF. И если я не ошибаюсь, особо это не влияет на работу с пакетами. И мой тебе совет, просматривай числа в шестнадцатеричном режиме =)
Kilatif вне форума   Ответить с цитированием