Получить метку времени из base64Binary в PHP - PullRequest
0 голосов
/ 23 сентября 2010

Веб-служба возвращает поле метки времени в формате base64Binary. В SOAP-ответе это выглядит так:

<a:TimeStamp>AAAAAAMpI9Q=</a:TimeStamp>

PHP __soapCall, однако, b64_decode () означает, что я получаю двоичную строку, похожую на ') # ▒'. Как мне получить фактическую метку времени из этого? Я попытался распаковать его ('L'), но в результате я получил массив ([1] => 0). Там действительно ноль, т.е. 1970-01-01 или я что-то пропустил?

1 Ответ

2 голосов
/ 23 сентября 2010

Эта тестовая программа:

$b = "AAAAAAMpI9Q=";
$ts = base64_decode($b);
print_r(array_map("ord", str_split($ts)));

выходы:

Array
(
    [0] => 0
    [1] => 0
    [2] => 0
    [3] => 0
    [4] => 3
    [5] => 41
    [6] => 35
    [7] => 212
)

показывает, что строка в кодировке base64 дает вам 8-символьную строку при распаковке. Предположительно, он представляет собой 64-разрядное целое число, которое может быть подписано или не подписано, и нет, оно не равно нулю.

Учитывая приведенные выше значения, похоже, что это значение 53027796 - это то, что вы ожидаете?

...