2017-02-10 16 views
0
$fp = fopen('./test.dat','a+'); 
$a = 123123; 
$b = ($a & 0xFF00) >> 8; 
$b = pack('c',$b); 
fwrite($fp,$b) 
fclose($fp); 

Когда я работаю над этим кодом, возможно, я получаю значение 'e0', но я получаю 'ce b0'. Что имеет значение для этого кода?pack() не работает в моем PHP. Мне нужно преобразовать int в байт

+0

Где ваш $ с? –

+0

Просто введите ошибку .. – WKcho

ответ

0

пакет получит символ, вам нужно использовать DecHex, чтобы получить e0, как это: вот live demo

<?php 
$a = 123123; 
echo $a; 
echo "\n"; 
$b = ($a & 0xFF00) >> 8; 
echo $b; 
echo "\n"; 
$c = dechex($b); 
$b = pack('c',$b); 
echo $b; 
echo "\n"; 
echo $c; 

выход:

123123 
224 
� 
e0 
+0

Благодарим вас за ответ, но я получаю неправильные данные, когда использую fwrite(). – WKcho