结合字节php

时间:2012-03-08 09:28:17

标签: php byte

我需要相当于这部分(在C ++中),但在PHP上:

unsigned char arr[ 2 ];
arr[ 0 ] = 0x04;
arr[ 1 ] = 0x00;
unsigned short shape_types;
memcpy( &shape_types, arr, 2 )

也许有人知道一个程序,在那里我可以组合字节并在十六进制和十二月看到结果?

1 个答案:

答案 0 :(得分:2)

您提供的代码不能直接适用于PHP。

PHP缺乏将数据直接从一个内存位置移动到另一个内存位置的输入或能力来执行此操作。

我猜你想要的几乎就是以下内容。

您的输入是一个字节数组:( 32位系统最多包含4个字节,64位最多包含8个字节)

$bytes = array(
    0x04,
    0x00
);

你可以通过循环减少它:

$result = 0;
foreach ($bytes as $byte) {
    $result = $result << 8 | $byte;
}

array_reduce

$result = array_reduce(
    $bytes,
    function ($out, $in) {
        return $out << 8 | $in;
    }
);

甚至只是直接组合这些值:

$result = $bytes[0] << 8 | $bytes[1];

以十六进制显示:

var_dump(dechex($result));

输出:

  

字符串'400'(长度= 3)