2013-12-12 61 views
0

我有硬件單元,當請求的一些數據,返回字符串,使得當上空間分解,返回值的數組:轉化0X字節endparts成實際值

$bytes = array(
    '03', 
    '80', 
    'A0', 
    '01' // and others, total of 240 entries 
); 

這些實際上,描繪字節:0x030x80,0xA00x01。我需要將它們轉化爲他們的實際價值。

我已經嘗試了一個循環,到:$value = 0x{$byte},$value = {'0x' . $byte}和其他,無濟於事。

也試過unpack,但不知道應用什麼格式,對字節有點無知。

看起來像一個基本的問題,但不能包裹我的頭。

我該如何動態地將它們轉換爲實際的整數值?

+0

這些是十六進制數字。你想要的十進制等值? – sfotiadis

+0

@ kabamaru,是的。 – jolt

+0

十六進制($ byte)? –

回答

1

使用chr如果你想有一個字符串

$value = chr($byte); 

使用hexdec如果你想要一個整數

$value = hexdec($byte); 
0

如果$string是原始數據(十六進制數之間用空格隔開),那麼你就可以提取二進制數據是這樣的:

$binary = pack('H*',str_replace(' ','',$string)); 
1

In PHP,字節是同一個字符的長字符串,用下面的轉義:

$byte = "\x03"; 

還有一個功能,可以幫助你,這是chr()。 該函數以您想要獲取的字節的ASCII碼作爲參數。因爲它可以是一個數字串或一個整數,就可以使用

$code = "03"; 
$byte = chr("0x" . $code); 

獲得'\x03'字節,與所述參數CHR被解釋爲一個十六進制整數。

在另一方面,作爲@chumkiu mentionned,如果你想獲得整數值,下面的代碼將工作:

$code = "03"; 
$int = hexdec($code); 
1

我覺得這樣的事情就足夠了:

foreach($bytes as byte) 
{ 
    echo hexdec($byte); 
} 

另請參閱hexdec手冊。