Bridget Benson wrote:
>
> This is a response to last week's question on how to extract bits out
> of a string of bytes.
>
> Assume $packet is a string of 8 bytes.
>
> To extract the second byte:
> $second = unpack ('C', substr($packet, 1, 1));
You really don't need substr() here.
$second = unpack 'x C', $packet;
> To extract the last four bytes
> $last_four = unpack ('N', substr($packet, 4, 4));
Or here.
$last_four = unpack 'x4 N', $packet;
> To extract the first two:
> $first_two = unpack ('n', substr($packet, 0, 2));
Or here.
$first_two = unpack 'n', $packet;
> To extract the first four bits from the second byte:
> $first_four_bits = int (unpack ('C', substr($packet, 1, 1)) / 16);
And, you can use vec() to extract bits.
$first_four_bits = vec $packet, 2, 4;
> To extract the second four bits from the second byte:
> $second_four_bits = (unpack ('C', substr($packet, 1, 1)) % 16);
$second_four_bits = vec $packet, 3, 4;
:-)
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]