0

Web 服务以 base64Binary 格式返回时间戳字段。在 SOAP 响应中看起来像这样:

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

PHP __soapCall,然而,b64_decode()s 和我得到一个看起来像')#▒' 的二进制字符串。我如何从中获得实际的时间戳?我试图 unpack('L') 它但它给了我 Array([1] => 0) 结果。真的有零,即 1970-01-01 还是我错过了什么?

4

1 回答 1

2

这个测试程序:

$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 - 这是你所期望的吗?

于 2010-09-23T15:52:50.337 回答