Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,326
1

Перевод double в byte[]

17.05.2016, 16:21. Просмотров 178. Ответов 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 разложить на байты отправить на сервер и там обратно восстановить из байтов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2016, 16:21
Ответы с готовыми решениями:

из c# byte получить картинку
Есть массив байтов приходит из веб сервиса Как из этого получить...

Какими значениями инициализируется массив byte
Есть байтовый массив byte b = new byte; Чему будет равно b, b, b... ...

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

Как по byte[] data узнать размер снимка?
урок...

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

5
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,732
17.05.2016, 16:23 2
yura91, т.е. тебе, как в остальных 99% случаев, лень подумать, почитать теорию, но надо, чтобы за тебя кто-то это сделал?
1
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,326
17.05.2016, 17:31  [ТС] 3
Нет просто запутался немного
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,732
17.05.2016, 20:03 4
yura91, честно говоря, не уверен, что первый код является лучшим, но допустим.
Тогда надо просто в обратной последовательности собрать double. Т.е. выполнить сдвиг битов влево, затем биты преобразовать в double. Правда, это знания из ассемблера, а как в Яве делается, я не в курсе.
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,326
17.05.2016, 20:10  [ТС] 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 сложнее
0
_Night_Scream_
80 / 77 / 11
Регистрация: 08.08.2013
Сообщений: 631
17.05.2016, 20:51 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
0
17.05.2016, 20:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2016, 20:51

Передача информации (byte array) с android на пк (c#) через usb
Здравствуйте. Подскажите пожалуйста, каким образом можно реализовать передачу...

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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