Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
#1

Перевод double в byte[] - Программирование Android

17.05.2016, 16:21. Просмотров 103. Ответов 5
Метки нет (Все метки)

Я нашел такой код.
Java
1
2
3
4
double d = 65.43;
        byte[] output = new byte[8];
        long lng = Double.doubleToLongBits(d);
        for(int i = 0; i < 8; i++) output[i] = (byte)((lng >> ((7 - i) * 8)) & 0xff);
Этот код переводит double в byte[], а как тогда из этого массива при помощи тех же операторов восстановить double?
Мне просто нужно double разложить на байты отправить на сервер и там обратно восстановить из байтов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2016, 16:21     Перевод double в byte[]
Посмотрите здесь:

из c# byte получить картинку - Программирование Android
Есть массив байтов приходит из веб сервиса Как из этого получить картинку? p.s. мучаюсь 2 дня нечего не получается... пробую...

Старший (первый) бит переменной типа byte - Программирование Android
Вопрос в следующем, как в переменной типа byte узнать значение первого бита (1 или 0)? Как это сделать через преобразование в строку а...

Как по byte[] data узнать размер снимка? - Программирование Android
урок http://startandroid.ru/ru/uroki/vse-uroki-spiskom/266-urok-133-kamera-delaem-snimok-i-pishem-video.html строка public void...

Как передать byte[] в WebView для отображения PDF ? - Программирование Android
Имеется pdf-файл в виде массива байт, каким образом можно передать этот массив в WebView, чтобы показать этот pdf на экране?

Округлить double - Программирование Android
Иногда возвращается число с десятыми/сотыми и т.д., к примеру 47,5674, а иногда есть только десятые/сотые и т.д., например 0,042137854.. ...

Преобразовать массив float чисел в массив типа byte и наоборот - Программирование Android
Привет форумчанам У меня такая задача. Через bluetooth нужно передавать числа float (или double). bluetooth при передаче использует...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
17.05.2016, 16:23     Перевод double в byte[] #2
yura91, т.е. тебе, как в остальных 99% случаев, лень подумать, почитать теорию, но надо, чтобы за тебя кто-то это сделал?
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
17.05.2016, 17:31  [ТС]     Перевод double в byte[] #3
Нет просто запутался немного
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
17.05.2016, 20:03     Перевод double в byte[] #4
yura91, честно говоря, не уверен, что первый код является лучшим, но допустим.
Тогда надо просто в обратной последовательности собрать double. Т.е. выполнить сдвиг битов влево, затем биты преобразовать в double. Правда, это знания из ассемблера, а как в Яве делается, я не в курсе.
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
17.05.2016, 20:10  [ТС]     Перевод double в byte[] #5
int такой код собирает и разбирает норм
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static int byteArrayToInt(byte[] b)
    {
        return   b[3] & 0xFF |
                (b[2] & 0xFF) << 8 |
                (b[1] & 0xFF) << 16 |
                (b[0] & 0xFF) << 24;
    }
 
    public static byte[] intToByteArray(int a)
    {
        return new byte[] {
                (byte) ((a >> 24) & 0xFF),
                (byte) ((a >> 16) & 0xFF),
                (byte) ((a >> 8) & 0xFF),
                (byte) (a & 0xFF)
        };
    }
а с double сложнее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2016, 20:51     Перевод double в byte[]
Еще ссылки по теме:

Преобразование EditText в Double - Программирование Android
Здравствуйте, понемногу изучаю андроид и вот уперся в проблему, точнее в не знание. Есть EditText в нем указал что можно вводить только...

Ввод в edittext double - Программирование Android
Нужно сделать так чтобы в edittext можно было ввести с клавиатуры или из буфера только double то есть число вида 54,235894 45,2781554 ...

Преобразование string в double - Программирование Android
Такой код не прокатывает: double chislo=Double.parseDouble(R.string.about_text3) Как сделать, чтобы работало?

Работа с числами типа double - Программирование Android
еть два числа типа double: a=0.0001, b=500 при делении a/b=2.00000000000000002E-7, вопрос откуда лишняя двойка? и как от нее...

Java.lang.NumberFormatException: Invalid double - Программирование Android
Android приложение, в котором нужно построить график. Для этого я получаю с помощью AsyncTask(парсинг XML) значения типа String, но мне их...

Double val = 83.1*3; val == 249.29999999999998; Android так считает - Программирование Android
Double val = 83.1*3; Log.i(&quot;M&quot;,&quot;val = &quot;+val); M: val = 249.29999999999998 В чем фишка? Или это я в школе на математике...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 584
17.05.2016, 20:51     Перевод double в byte[] #6
yura91, Не знаю как с double, но с float я делаю так
Java
1
2
3
4
5
6
7
8
9
10
11
12
byteBuf = new byte [4];
byteBuf[0] = (byte)buf[2];
byteBuf[1] = (byte)buf[3];
byteBuf[2] = (byte)buf[0];
byteBuf[3] = (byte)buf[1];
f1 = bytearray2float(byteBuf);
 
public float bytearray2float(byte[] b) {
  ByteBuffer buf = ByteBuffer.wrap(b);
  return roundFloat(buf.getFloat(), 2);
  //return  buf.getFloat(); без округления
}
думаю с double что-то похожее есть.

upd: а, надо разложить. Может это http://stackoverflow.com/questions/2...ouble-and-back
Yandex
Объявления
17.05.2016, 20:51     Перевод double в byte[]
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru