0

我在 C++ 中有这段代码,它返回输出以下数字

int main(int argn, char** argv)
{
    cout << (*((unsigned long*)"P3TF")) << endl;
    cin.get();
    return 0;
}

如何在 PHP 中实现上述功能(即 unsigned long int 中的字符串“P3TF”)。我尝试使用 pack 方法:

<?php
$lol = pack('N', 'P3TF');
var_dump( $lol, // returns jumbled up characters
          ord($lol[0]), // returns int 0
          ord($lol[1]), // returns int 0
          ord($lol[2]), // returns int 0
          ord($lol[3]), // returns int 0
          ord($lol[0]).ord($lol[1]).ord($lol[2]).ord($lol[3]) // returns 4 zeros as a string.
);
?>

我需要它的 bigendian 字节顺序,所以我没有使用pack('V')or pack('L')

任何人都知道如何实现这一目标?

谢谢!

4

1 回答 1

1

如果它是"P3TF"真正的代码,为什么不转换一次,然后在 PHP 代码中定义一个常量呢?

如果做不到这一点,你需要unpack,而不是 pack。例如跑步

<?php
$in = 'P3TF';
$arr = unpack('N', $in);
printf("%08x\n", $arr[1]);
?>

Gives 50335446,这是 'P' '3' 'T' 'F' 的 ASCII 码(以十六进制表示)(连接)

于 2011-10-22T10:44:15.357 回答