John Davidson

bit - PHP pack with multiple values with different lengths


I'd like to pack a string consisting of a 64 bits, 32 bits and 32 bits ints.
I don't have much experience with the pack function (or bits altogether) so I'm trying to do something like this:

pack('JNN', 1, 2, 3);
// and

But that does not yield the result I'm after.

The problem is that when I run that code I receive the following:

array [
"NN" => 1

But I expected this:

array [

Any idea how to approach this?

Thanks in advance,

My Answer:
1, 0, 0]_// instead of [1, 2, 3]__The issue here is that the 'J' format specifier in the pack function is for a 64-bit unsigned integer, which is larger than the 32-bit integers you are trying to pack. To pack a 32-bit integer, you should use the 'N' format specifier instead._So the correct way to pack and unpack the values would be:_php$packed = pack('NNN', 1, 2, 3);$unpacked = unpack('N1a/N1b/N1c', $packed);print_r($unpacked);_This will output:_Array[ [a] => 1 [b] => 2 [c] => 3]

Rate this post

4 of 5 based on 6951 votes


© 2024 - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us