0

Web サービスは、タイムスタンプ フィールドを base64Binary 形式で返します。SOAP 応答では次のようになります。

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

ただし、PHP __soapCall は b64_decode() を実行し、')#▒' のようなバイナリ文字列を取得します。これから実際のタイムスタンプを取得するにはどうすればよいですか? 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 に答える