powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Delphi double => Java double
6 сообщений из 6, страница 1 из 1
Delphi double => Java double
    #37831017
MAX2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с проблемой есть код на дельфе который в массив записывает переменную типа double,
Код: pascal
1.
2.
3.
4.
5.
var
TmpTime : double;
SendBuffer : PChar;
....
Move(TmpTime,SendBuffer[0],8);



Пытаюсь на Java-е из массива достать double фигня получается, вот код
Код: java
1.
2.
        long TmpLong=(0xFF & paramArrayOfByte[(7)]) << 56 |(0xFF & paramArrayOfByte[( 6)]) << 48 |(0xFF & paramArrayOfByte[(5)]) << 40 |(0xFF & paramArrayOfByte[( 4)]) << 32 |(0xFF & paramArrayOfByte[( 3)]) << 24 | (0xFF & paramArrayOfByte[( 2)]) << 16 | (0xFF & paramArrayOfByte[(1)]) << 8 | 0xFF & paramArrayOfByte[0];
		return Double.longBitsToDouble(TmpLong);


как мне дельфиский дубль достать из массива?
...
Рейтинг: 0 / 0
Delphi double => Java double
    #37831040
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может порядок битов\байтов другой? Загоните одно и то же значение в Java и Delphi и посмотрите бинарное содержимое в массиве.
...
Рейтинг: 0 / 0
Delphi double => Java double
    #37831076
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczМожет порядок битов\ байтов другой? Загоните одно и то же значение в Java и Delphi и посмотрите бинарное содержимое в массиве.
+1

погугли bigEndian litleEndian.
...
Рейтинг: 0 / 0
Delphi double => Java double
    #37831248
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Delphi double => Java double
    #37831371
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
package readdoubleapp;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.FileChannel;

public class ReadDoubleApp {
    final static String PATH = "D:/fil.dat";
    public static void main(String[] args) {
        PrintStream s = System.out;
        try {
            FileInputStream fis = new FileInputStream(PATH);
            FileChannel channel = fis.getChannel();

            ByteBuffer bb = ByteBuffer.allocate(64 * 1024);
//            bb.order(ByteOrder.BIG_ENDIAN); //по-умолчанию стоит BIG_ENDIAN
//            bb.order(ByteOrder.LITTLE_ENDIAN);
            bb.order(ByteOrder.nativeOrder()); //для моей платформы родной LITTLE_ENDIAN (у меня AMD), на Интеле - BIG_ENDIAN
            
            channel.read(bb);
            bb.flip();

            int cnt = 0;
            while (bb.remaining() >= 8) {
                s.print("Дабл [");
                s.print(++cnt);
                s.print("]: ");
                s.println(bb.getDouble());
            }
        } catch (IOException e) {
            s.println("IOException : " + e);
        }
    }
}



Только BIG_ENDIAN
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
package readdoubleapp;

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;

public class ReadDoubleApp {

    final static String PATH = "D:/fil.dat";

    public static void main(String[] args) {
        PrintStream s = System.out;
        try {
            FileInputStream fis = new FileInputStream(PATH);
            DataInputStream dis = new DataInputStream(fis);

            int cnt = 0;
            while (dis.available() >= 8) {
                s.print("Дабл [");
                s.print(++cnt);
                s.print("]: ");
                s.println(dis.readDouble());
            }
        } catch (IOException e) {
            s.println("IOException : " + e);
        }
    }
}
...
Рейтинг: 0 / 0
Delphi double => Java double
    #37831659
MAX2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mkMAX2002,
http://stackoverflow.com/questions/6471177/converting-8-bytes-of-little-endian-binary-into-a-double-precision-float
(Если платформа не micro edition)
Ага, спасибо, все получилось !!!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Delphi double => Java double
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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