Показать сообщение отдельно
Старый 16.12.2011, 14:49
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 1  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
По умолчанию ReadLong from ByteArray

Попросили помощи в одном интересном вопросе. Сам не достаточно компетентен в данном вопросе, т.е. тоже интересно.
С сокет-сервера получаем данные (Endian.LITTLE_ENDIAN).
Среди массива данных имеется
Цитата:
cd 9 e6 3a 2 0 0 0
что соответствует числу
9578088909
Вот инвертнутый массив (в формате BIG_ENDIAN):
Цитата:
0 0 0 2 3a e6 9 cd
который получаем при использовании метода
Код AS3:
public function readUnsignedLong():Number
  {
    //TODO error check length
    return  ((readUnsignedByte() & 255) << 56) + 
      ((readUnsignedByte() & 255) << 48) +
      ((readUnsignedByte() & 255) << 40) +
      ((readUnsignedByte() & 255) << 32) +
      ((readUnsignedByte() & 255) << 24) +
      ((readUnsignedByte() & 255) << 16) +
      ((readUnsignedByte() & 255) << 8) +
      ((readUnsignedByte() & 255) << 0);
  }
В результате имеем
988154319
988154319 != 9578088909
В чем косяк? Спасибо за помощь.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!