1

Я работаю с android BLE.Текущее время как 32-битная временная метка UNIX и смещение по времени

Необходимо написать характеристику Текущее время как 32-битная отметка времени UNIX. После этого напишите текущий часовой пояс, смещенный с UTC в секундах. Вероятно, проблема заключается в том, чтобы скрыть 32 байтовый массив, но я не уверен на 100%.

Я сделал это, но что-то не так. Он очень быстро растет и, в конце концов, пропускает 0x7FFF, FFFF, то есть он переполняется и становится отрицательным, поскольку timestamp - целое число со знаком.

private byte[] getCurrentUnixTime() { 
     int unixTime = (int) (System.currentTimeMillis()/1000L); 
     byte[] currentDate = Converter.intTo32ByteArray(unixTime); 
     return currentDate; 
    } 



    private byte[] getCurrentTimeOffset() { 
     TimeZone tz = TimeZone.getDefault(); 
     Date timeNow = new Date(); 
     int offsetFromUtc = tz.getOffset(timeNow.getTime())/1000; 
     byte[] offsetFromUtcByteArray = Converter.intTo32ByteArray(offsetFromUtc); 
     return offsetFromUtcByteArray; 
    } 



public static byte[] intTo32ByteArray(int number) { 

     byte[] byteArray = new byte[]{ 
       (byte) (number >> 24), 
       (byte) (number >> 16), 
       (byte) (number >> 8), 
       (byte) number 

     }; 
     return byteArray; 
    } 

ответ

0

Я решаю проблему с этим междунар в байт перекодировки массив

byte[] offsetFromUtcByteArray = ByteBuffer.allocate(4).order(LITTLE_ENDIAN).putInt((int) offsetFromUtc).array(); 

и

byte[] currentDate = ByteBuffer.allocate(4).order(LITTLE_ENDIAN).putInt((int) unixTime).array(); 
1

this Вы используете rigth conversion.

В Java

по умолчанию, тип INT данных представляет собой 32-разрядное знаковое двоичное дополнение целое число, которое имеет минимальное значение -0x7FFFFFFF и максимальное значение из 0x7FFFFFFF-1 oracle.

Так что это просто проблема с представлением (а не данными). Есть аналогичный случай с представлением цветов с int через ARGB - ему нужны 4 * 8 бит, поэтому значение когда-то позитивное, иначе отрицательное, если вы хотите просто отобразить это.

Для отображения желаемого значения можно преобразовать байт [], чтобы долго, как в этом example

 Смежные вопросы

  • Нет связанных вопросов^_^