![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
newbie5 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 12.12.2008 Репутация: нет Всего: нет |
как можно посмотреть функции longBitsToDouble/doubleToLongBits? отправляющиеся байты, и байты, которые должны отправляться, уж слишком разные.
процедура отправки в упрощенном виде выглнядит следующим образом:
если выводить знаковые байты получается приблизительно следующее: 64 9 30 -72 81 -12 -123 31 - должно быть -72 30 9 64 31 -123 -21 81 - приходит логика, конечно, налюдается наблюдается, но почему так получается - непонтяно Это сообщение отредактировал(а) newbie5 - 22.1.2009, 14:09 |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
"В должно быть" не -12, а -21.
Очевидно, в твоём микропроцессоре есть порядок байт в short (int16) и int (int32) - младший байт вперёд, а int64 он аппаратно не поддерживает. Программисты, писавшие библиотеку для double разместили сначала старший int32, а затем младший. Нужно переставить байты или в C++, чтобы в Java можно было применить DataInputStream, или в Java:
Это сообщение отредактировал(а) math64 - 22.1.2009, 14:49 |
|||
|
||||
newbie5 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 12.12.2008 Репутация: нет Всего: нет |
спасибо всем огромное. тема, видимо, закрыта)
|
|||
|
||||
Beni |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 21.5.2008 Где: Xaifa Репутация: нет Всего: нет |
Function for conversion of an 8 byte array to double:
public static double arr2double (byte[] arr, int start) { int i = 0; int len = 8; int cnt = 0; byte[] tmp = new byte[len]; for (i = start; i < (start + len); i++) { tmp[cnt] = arr[i]; //System.out.println(java.lang.Byte.toString(arr[i]) + " " + i); cnt++; } long accum = 0; i = 0; for ( int shiftBy = 0; shiftBy < 64; shiftBy += 8 ) { accum |= ( (long)( tmp[i] & 0xff ) ) << shiftBy; i++; } return Double.longBitsToDouble(accum); } |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |