sub pack24{ substr( pack('l<', $_[0]), 1) };; sub unpack24{ unpack('l<', "$_[0]\0") };; print "$_: ", unpack24( pack24( $_ ) ) for ( -8388608, -8388607, -2, -1, 0, 1, 2, 8388606, 8388607 );; -8388608: 16744448 -8388607: 16744448 -2: 16777215 -1: 16777215 0: 0 1: 0 2: 0 8388606: 32767 8388607: 32767