Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразование byte[8] к double / 6 сообщений из 6, страница 1 из 1
27.12.2005, 09:44
    #33458667
welaribo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование byte[8] к double
Так получается, что данные из файла я могу читать только в виде байт. Необходимо преобразовать прочитанные из файла 8 байт в double, то есть данные 8 байт содержат один double. Подскажите, как это можно сделать?
...
Рейтинг: 0 / 0
27.12.2005, 10:21
    #33458768
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование byte[8] к double
а в каком виде они представлены байтами? в long перевести -
элементарно. а для double надо знать длину мантисы (вроде так
называется... нам такие задачи на 1ом курсе давали)
-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
27.12.2005, 11:42
    #33459024
welaribo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование byte[8] к double
Если я использую функцию DataInputStream.readDouble() то это число замечательно читается. Значит, представления данных байт следующее:
-бит знака
-11 бит exponent
-52 бита fraction
...
Рейтинг: 0 / 0
27.12.2005, 12:05
    #33459097
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование byte[8] к double
взято из java.io.DataInputStream#readDouble() и java.io.DataInputStream#readLong()

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 byte [] bdouble =  new   byte [ 8 ];

// read into bdouble ...

 long  longBits = (( long )bdouble[ 0 ] <<  56 ) +
            (( long )(bdouble[ 1 ] &  255 ) <<  48 ) +
            (( long )(bdouble[ 2 ] &  255 ) <<  40 ) +
            (( long )(bdouble[ 3 ] &  255 ) <<  32 ) +
            (( long )(bdouble[ 4 ] &  255 ) <<  24 ) +
            ((bdouble[ 5 ] &  255 ) <<  16 ) +
            ((bdouble[ 6 ] &  255 ) <<   8 ) +
            ((bdouble[ 7 ] &  255 ) <<   0 );

 double  d =  Double .longBitsToDouble(longBits);
...
Рейтинг: 0 / 0
27.12.2005, 12:15
    #33459131
rikman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование byte[8] к double
А еще вот так можно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 import  java.nio.*;

 class  b2d
{
	 public   static   void  main(String[] args)
	{
		 byte  b[] = { 64 , 74 ,- 12 , 122 ,- 31 , 71 ,- 82 , 20 };

		ByteBuffer bb = ByteBuffer.wrap(b);
		DoubleBuffer db = bb.asDoubleBuffer();
		 double  d = db.get( 0 );

		System.out.println(( new   Double (d)).toString());
	}
}
...
Рейтинг: 0 / 0
27.12.2005, 12:20
    #33459145
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование byte[8] к double
rikmanА еще вот так можно
скорее всего это будет тяжелее.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразование byte[8] к double / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]