![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перевести 20.01.10 в HEX(FA,EE,F8,95) [D7]
kokj007 © (2011-01-18 23:06:00)Добрый день. Помогите с следующей задачей:
перевести дату в HEX, например 20.01.10 соответствует FA,EE,F8,95.
Никак не получается, но работает в Excel ( http://www.onlinedisk.ru/file/592571/) и ещё в одной простой программе такое видел.
Искал касательно преобразования dec в hex, примеры были, но в итоге получал левые результаты.
Пожалуйста, скажите как делать нужно, спасибо!
Dimka Maslov (2011-01-19 12:55:00) [1]Дата может выражаться кол-вом дней, начиная с какого-то условного дня (например дня рождения Ильи Ильича Ворота). В этом случае шестнадцатеричное представление будет получаться простым переводом в шестнадцатеричную систему счисления, а старший байт (самый левый при little-endian) для многих близких дат будет одинаковым.
При этом бред п.2 это СМЕЩ, самая эзотерическая возможность Ёкселя, которая даётся один раз особо просветлённым.
KSergey (2011-01-19 12:25:00) [2]Чувак, это форум по Delphi, знаешь такую?
KilkennyCat (2011-01-19 08:37:00) [3]увольняйся. лучше самому, чем ждать пинка.
есть, конечно, вариант открыть справку екселя и посмотреть значение каждой функции, а также спросить пользователя файла, что, собственно, отображается в этой ячейке, да и ваще логику книги, но проще (для тебя) вызвать инопланетян.
kokj007 (2011-01-19 08:13:00) [4]короче, не знаю, видели вы или нет, но получается вот че, значит например 12 -декабрь преобразуется таким макаром:
1) =BIN2HEX(G16;2)
2) а G16 ячейка (я в шоке) таким =RIGHT(SUMPRODUCT(NOT(MID(C1;COLUMN(OFFSET($A$1;0;0;1;LEN(C1)));1)=(MID(C2;COLUM N(OFFSET($A$2;0;0;1;LEN(C1)));1)))*1;10^(LEN(C1)-COLUMN(OFFSET($A$1;0;0;1;LEN(C1)))))+10^LEN(C1);LEN(C1))
че за бред в п.2 я не понимаю, что вообще человек придумал или это в какой-то среде написано?
KilkennyCat (2011-01-19 06:16:00) [5]что, до сих пор нужно ?!
kokj007 (2011-01-19 05:51:00) [6]ребята. первое FA не считается, вычислил, оно всегда статическое, тоесть нужно 3 значения перевести
Германн (2011-01-19 04:14:00) [7]
> ervy © (19.01.11 03:57) [4]
>
> Вас не смущает
Очень смущает.
Автора я уже попросил уточнить задачу на другом форуме.
Servy (2011-01-19 03:57:00) [8]
> Format('DateToHex = %x', [20, 1, 10]));
Вас не смущает, что в приведенном правильном ответе топик стартера первое число FA, которое существенно побольше 20ти, и чисел в ответе 4, когда дано 3? :)
> [0]
Чтобы перевести что-то во что-то, надо знать, по какой формуле это делать. У вас тут, судя по всему, не просто переписать числа в шестнадцатеричном виде, но провести над ними некоторые преобразования. Если вам нужно получить ровно то, что генерирует ваш Excel файл - дык откройте его да посмотрите формулы:
1й байт ответа, например, генерируется всегда равным значению маски, заданной в A17.
2й же, зависит уже от ячейки A3, в которой длинная формула, зависящая от маски и текущей даты.
И так далее, флаг вам в руки.
А вообще, расскажи-те ка, нафига оно вам нужно. А то похоже на возможное нарушение запрета:
Публиковать или искать серийные номера, коды а также алгоритмы взлома того или иного программного обеспечения
KilkennyCat (2011-01-19 02:55:00) [9]забыл еще парочку иксов, ну да нестрашно... :)
KilkennyCat (2011-01-19 02:52:00) [10]Format('DateToHex = %x', [20, 1, 10]));
Eraser (2011-01-19 02:39:00) [11]IntToHex