Я работаю над программой, которая конвертирует действительно старые файлы Open Access 4 .df в другие форматы, а также создает сценарии базы данных - я уже могу конвертировать все возможные типы, кроме десятичного типа. Я узнал, что порядок байтов должен быть 80-битной расширенной точностью. Я уже пытался выполнить преобразование самостоятельно, но мне не удалось выполнить преобразование из 80-битной расширенной точности (https://en.wikipedia.org/wiki/Extended_precision#x86_Extended_Precision_Format) в String и String в 80-битную расширенную точность в Java.
- Пример:
Стоимость: 1235
Hex из файла df: 40 00 9e 06 52 14 1e f0 db f6
- Пример:
Стоимость: 0,750
Hex из файла df: 3f ff c0 00 00 00 00 00 00 00
Может кто поможет с переделкой?
С наилучшими пожеланиями
Комментарий @EJP: Хорошо, я отбрасываю последние 16 бит, поэтому я получил 3f ff c0 00 00 00 00 00 относительно (Java - преобразовать шестнадцатеричный код в 64-битный IEEE-754 с плавающей запятой - двойная точность) Я пытаюсь преобразовать его с помощью
String hex = "3fffc00000000000";
long longBits = Long.valueOf(hex ,16).longValue();
double doubleValue = Double.longBitsToDouble(longBits);
Но результат 1,984375 а не 0,750
double
. Не сложно, и все это выполнимо в JDK API. - person user207421   schedule 27.02.2016