2012-03-08 20 views
-3

我需要這部分(在C++)的相當,但對PHP:結合字節PHP

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

也許有人知道一個程序,在那裏我可以結合字節,看看導致十六進制和十二月?

+0

SO不是一個網站,人們做你的爲你工作。您需要代碼 - 您聘請了一名開發人員。 – zerkms 2012-03-08 09:30:18

+0

你有沒有看過PHP手冊作爲出發點,或者你只是希望有人會給你的代碼? – 2012-03-08 09:30:49

+0

我不等到有人回答。我只想了解如何組合2個字節。 – user1256630 2012-03-08 10:06:00

回答

2

您提供的代碼不直接適用於PHP。

PHP缺乏將數據從一個內存位置直接移動到另一個內存的打字或能力。

我猜你想要的幾乎是以下內容。

你的輸入是一個字節數組:(包括最多4個字節用於32個系統中,最多8個64位)

$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)

+0

非常感謝!但我想我必須閱讀更多關於字節。 – user1256630 2012-03-09 15:25:06