Младшие и старшие биты.

choor

Новичок
Младшие и старшие биты.

Тут у меня задачка не простая. Нужно эмулировать API функцию: SystemTimeToFileTime(); на пых пыхе. Т.е. взять кол-во прошедших 100-нано-секундных интервалов с 1 января 1601 года (64 бита) и вытащить старшие 32 бита и младшие 32 бита. Долблюсь, пока сложно.
 

Андрейка

Senior pomidor developer
[m]pack[/m]

взять кол-во прошедших 100-нано-секундных интервалов
откуда взять то?
 

Wicked

Новичок
уничижать участников своим первым же сообщением - это сильно...
 

choor

Новичок
Я не собирался, да и ничего унизительного тут не вижу :(
 

Андрейка

Senior pomidor developer
choor
и зачем тебе эта цифра? что ты с ней делать потом будешь?
в инете решение искать пробовал?
 

choor

Новичок
2Андрейка: для генерации правильных данных что бы обойти фильтры. Искать пробовал, ничего не нашёл, такие задачи вообще не для пых пыха, я конечно понимаю это, но реализация нужна именно на нём. Я уж думаю какое-нить стороннее приложение использовать для вычисления. Код на си вообще простой, осталось только на никс платформу портировать. Если сейчас ничего не найду то так и поступлю.
Спасибо, за попытку въехать в суть задачи и помочь.
 

Андрейка

Senior pomidor developer
на win32 получи значение _FILETIME на дату
PHP:
date('r', 0)
; (Thu, 01 Jan 1970 00:00:00) -> 64битное число в строку

в пхп получаешь колво интервалов с 1970года [m]microtime[/m]
складываешь с помощью bcmath.. как-то так
 

Андрейка

Senior pomidor developer
cDLEON
Код:
    FILETIME ft;
    SYSTEMTIME st;

    GetSystemTime(&st);              // gets current time
    SystemTimeToFileTime(&st, &ft);  // converts to file time format
наслаждайтесь
 

choor

Новичок
PHP:
int main(int argc, char *argv[])
{
    SYSTEMTIME lt;
    FILETIME ft;
    GetLocalTime(&lt);
    SystemTimeToFileTime(&lt, &ft);
    printf("Hello my darling\n");
    printf("%08.8lX.%08.8lX\n",ft.dwHighDateTime,ft.dwLowDateTime);
    system("PAUSE");
    return EXIT_SUCCESS;
}
-~{}~ 29.06.07 16:29:

почти в одну секунду :))
 

Wicked

Новичок
choor
униЧИжать и унижать - слегка разные слова. А говорил я про "пых пых".
 

choor

Новичок
УНИЧИЖАТЬ (Даль)

"УНИЧИЖАТЬ УНИЧИЖАТЬ, уничижить кого, унижать, стыдить, уничтожать нравственным влияньем, уличая пристыжать и смирять этим, корить или позорить перед людьми."

-~{}~ 29.06.07 16:47:

Я специально заглянул в словарь по этому поводу :)
 

Unkind

Новичок
Как можно такую функцию реализовывать на PHP, когда время на её выполнение будет такое, что данные будут уже "устаревшими"? :)

А вообще должно быть так:
PHP:
<?php
function st2ft()
{
$mt = bcadd(microtime(true), "11644484400", 7);
$mt = str_replace(".", "", $mt);
$r = "";

	while(true)
	{
		$r .= bcmod($mt, 2);
		if(bccomp($mt, 2) < 0) break;
		$mt = bcdiv($mt, 2);
	}

$r = strrev($r);
$r = str_pad($r, 64, "0", STR_PAD_LEFT);
return explode(" ", wordwrap($r, 32, " ", 1));
}

print_r(st2ft());
?>
 

cDLEON

Онанист РНРСlub
Андрейка
А я хотел по коду на СИ понять саму задачу и для чего это вообще нужно. Походу не выйдет....
 
Сверху