Не могу решить головоломку

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Не могу решить головоломку

Сообщение XairOn » 03.11.2006 (Пт) 18:05

Hi All! Такая проблема, вобщем имеется 4 байта, которые содержат информацию о времени (не важно каком времени, важно знать, что время представлено в виде 00h 00m 00s или 00:00:00). Вобщем я не знаю, как значения этих байтов привести к такому виду. Что было понятнее, приведу парочку примеров:
1
HEX 2B A5 91 43 (тут собственно и есть эти 4 байта)
DEC 43 165 145 67 (это для удобства в DEC перевел, хотя мне эти числа время ну никак не напоминают)

=> 00:04:51 — а вот это время, которое представлено вышеуказанными байтами

2
HEX 8A 9B A5 42
DEC 138 155 165 66

=> 00:01:22

3
HEX F6 E1 9E 44
DEC 246 225 158 68

=> 00:21:11

Никак не могу уловить по какой логике это время кодируется. Помогите пожалуйста.
Чуть не забыл, эти байты представляют число (или числа) в вещественном формате (float32)

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 03.11.2006 (Пт) 18:10

Там у тебя явно не время, ибо в сутках 86400 секунд. Таким образом заполнить все 4 байта оно не может. Видимо, это - время и дата.
Скорее всего - это количество секунд, прошедшее, с некоторого момента. Точную дату - не скажу, ибо не помню, но связано с появлением первого компа.

З. Ы. Всё это лишь домыслы.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.11.2006 (Пт) 18:22

Ну да.
Это тупо число секунд с полуночи.

Код: Выделить всё
Option Explicit

Private Type s
  s As Single
End Type

Private Type b
  b(1 To 4) As Byte
End Type

Private Sub Form_Load()
  Dim b As b, s As s
 
  b.b(1) = &H2B
  b.b(2) = &HA5
  b.b(3) = &H91
  b.b(4) = &H43
 
  LSet s = b
 
  MsgBox s.s & vbNewLine & "I.e. " & Format$(DateAdd("s", s.s, CDate(0)), "hh:mm:ss")
End Sub

Если очень нужен "принцип кодирования", то http://bbs.vbstreets.ru/viewtopic.php?p=42678#42678
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 03.11.2006 (Пт) 18:32

Не знал, что в VB есть встроенный CopyMemory.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 100

    TopList