I tested my solutions before posting them.
Really? Really, really? Hm?
#! perl -slw
use strict;
sub pack24be{ substr( pack('l>', $_[0]), 1) }
sub unpack24be{ unpack('l>', "$_[0]\0") >> 8 }
sub pack24le{ substr( pack('l<', $_[0] ), 0, 3); }
sub unpack24le{ unpack( 'l<', "\0$_[0]" ) >> 8 }
print( "be: $_: ", unpack24be( pack24be( $_ ) ) ),
print( "le: $_: ", unpack24le( pack24le( $_ ) ) )
for ( -8388608, -8388607, -2, -1, 0, 1, 2, 8388606, 8388607 )
__END__
C:\test>junk101 (version 2 )
be: -8388608: -2147483648
le: -8388608: -2147483648
be: -8388607: -2147483392
le: -8388607: -2147483392
be: -2: -512
le: -2: -512
be: -1: -256
le: -1: -256
be: 0: 0
le: 0: 0
be: 1: 256
le: 1: 256
be: 2: 512
le: 2: 512
be: 8388606: 2147483136
le: 8388606: 2147483136
be: 8388607: 2147483392
le: 8388607: 2147483392
C:\test>junk101 (version 3)
be: -8388608: 72057594029539328
le: -8388608: 72057594029539328
be: -8388607: 72057594029539329
le: -8388607: 72057594029539329
be: -2: 72057594037927934
le: -2: 72057594037927934
be: -1: 72057594037927935
le: -1: 72057594037927935
be: 0: 0
le: 0: 0
be: 1: 1
le: 1: 1
be: 2: 2
le: 2: 2
be: 8388606: 8388606
le: 8388606: 8388606
be: 8388607: 8388607
le: 8388607: 8388607
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.