log(0) is undefined, so I designed a custom function hexbytes which returns a list of 0 padded bytes and special casing '00'.
Please note how I kept the reverse and join outside for generic flexibility of use.
NB: you must still take care of negative $n!
use strict;
use warnings;
use feature "say";
sub hexbytes {
my ($n)=@_;
my $nibbles = $n
? int( log($n)/log 256 )+1
: 1 ; # 00 has no log
$nibbles *= 2; # 2 nibbles = 1 byte
return sprintf( '%0*x', $nibbles, $n ) =~ /(..)/g;
}
say "$_ => ", join " ", reverse hexbytes($_) for 0,2,20,200,2000,20000
+,200000;
C:/Strawberry/perl/bin\perl.exe -w d:/tmp/pm/hex_reverse.pl
0 => 00
2 => 02
20 => 14
200 => c8
2000 => d0 07
20000 => 20 4e
200000 => 40 0d 03
Compilation finished at Mon Aug 30 15:57:08
-
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.
|