pack doesn't support this directly. This will do the job, though it can probably be made significantly more efficient:
sub toComp3{
my $num = shift;
my @digits = split'',abs $num;
unshift @digits, 0 unless @digits & 1;
push @digits, $num < 0 ? 13: 12;
my $comp3 = ''; $comp3 .= chr( shift( @digits ) * 16 + shift( @dig
+its ) )
while @digits;
return $comp3
}
print unpack 'H*', toComp3( 240 );;
240c
It also doesn't cover unsigned numbers. Though a flag to indicate signed-ness could be added.
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.
|