PHP 8.5.0 Released!

Voting

: four minus three?
(Example: nine)

The Note You're Voting On

Sergio Santana: ssantana at tlaloc dot imta dot mx
21 years ago
Suppose we need to get some kind of internal representation of an integer, say 65, as a four-byte long. Then we use, something like:
<?
 $i = 65;
 $s = pack("l", $i); // long 32 bit, machine byte order
 echo strlen($s) . "<br>\n";
 echo "***$s***<br>\n";
?>
The output is:
X-Powered-By: PHP/4.1.2
Content-type: text/html
4
***A*** 
(That is the string "A0円0円0円")
Now we want to go back from string "A0円0円0円" to number 65. In this case we can use:
<?
 $s = "A0円0円0円"; // This string is the bytes representation of number 65
 $arr = unpack("l", $s);
 foreach ($arr as $key => $value)
 echo "\$arr[$key] = $value<br>\n";
?>
And this outpus:
X-Powered-By: PHP/4.1.2
Content-type: text/html
$arr[] = 65
Let's give the array key a name, say "mykey". In this case, we can use: 
<?
 $s = "A0円0円0円"; // This string is the bytes representation of number 65
 $arr = unpack("lmykey", $s);
 foreach ($arr as $key => $value)
 echo "\$arr[$key] = $value\n";
?>
An this outpus:
X-Powered-By: PHP/4.1.2
Content-type: text/html
$arr[mykey] = 65
The "unpack" documentation is a little bit confusing. I think a more complete example could be:
<?
 $binarydata = "AA0円A";
 $array = unpack("c2chars/nint", $binarydata);
 foreach ($array as $key => $value)
 echo "\$array[$key] = $value <br>\n";
?>
whose output is:
X-Powered-By: PHP/4.1.2
Content-type: text/html
$array[chars1] = 65 <br>
$array[chars2] = 65 <br>
$array[int] = 65 <br>
Note that the format string is something like
<format-code> [<count>] [<array-key>] [/ ...]
I hope this clarifies something
Sergio

<< Back to user notes page

AltStyle によって変換されたページ (->オリジナル) /