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.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.