Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^4: array of binaries to hex conversion

by remiah (Hermit)
on Sep 12, 2012 at 11:44 UTC ( #993213=note: print w/ replies, xml ) Need Help??


in reply to Re^3: array of binaries to hex conversion
in thread array of binaries to hex conversion

Thanks for reply. Stories of bit is a little bit hard for me. Please point out if I am saying something wrong.

How/what?

I was wrong. I was confused with little endian and big endian. Here OP expects it's input bit array as Big Endian(N) and descending bit order(B).

printf "0x%x\n",                #hex
    unpack("N",                 #unpack it as 32bit int ,big endian
        pack("B32",             #pack it as MSB descending bit, 32bit inte
            sprintf("%032s",    #32 length bit string
                join('',
                    @rand1))));

So, left pad works fine, even if it was an array of 16bit.
my $num;
$num=pack('n',7); #16bit short Big endian, it's value is 7
printf "big endian, descending bit order:%s\n", unpack('B16',$num);
printf "big endian, ascending  bit order:%s\n", unpack('b16',$num);
printf "unsigned short=%d\n",unpack('n',pack('B16', unpack('B16', $num)));

printf "right pad:%s\n", unpack('B16',$num) . '0' x 16;
printf "32bit right pad=%d\n",unpack('N',pack('B32', unpack('B16',$num) . '0' x 16));
#==> this prints "32bit right pad=458752"
printf "left  pad:%s\n", '0' x 16 . unpack('B16',$num);
printf "32bit left  pad=%d\n",unpack('N',pack('B32', sprintf('%032d', unpack('B16',$num)))
#==> this prints "32bit left  pad=7"
You are the same anonymous with this.
print  '0x'. unpack 'H*', pack("B32", substr("0" x 32 . join('',@rand1), -32));
So, you are going to say: If you need it's hexadecimal values, there is no need for decimal( unpack 'N') -> hexadecimal conversion( printf %x), just print it as hex( unpack 'H').

I am going to see your links. Thanks for reply.


Comment on Re^4: array of binaries to hex conversion

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://993213]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (10)
As of 2015-07-07 20:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls