in reply to packing and unpacking

my $r = 0x234; my $t = 0x345; my $y = pack('L L', $t, $r); my $x1 = unpack('Q', $y); printf "\nThe value is 0x%x", $x1; # 0x23400000345

(in case you have a 64-bit perl)

Replies are listed 'Best First'.
Re^2: packing and unpacking
by ungalnanban (Pilgrim) on Mar 12, 2010 at 10:00 UTC

    I don't know the 64-bit Perl.
    whether you are mentioning 64-bit processor or ...?

    I am using Perl version 5.8.8

    I ran the given code It shows the following error.
    Invalid type 'Q' in unpack at pack.pl line 9.
    --$ugum@r--

      You could also simply try

      my $x1 = $r << 32 | $t; printf "\nThe value is 0x%x", $x1; # 0x23400000345

      (though whether this works similarly depends of the build options of your perl)

      P.S.: What exactly do you need this for?  Maybe bigint or Math::BigInt would help.

      Update:

      use bigint; my $r = 0x234; my $t = 0x345; my $x1 = $r << 32 | $t; print $x1->as_hex;


        while(1)
        {
        print"Thankyou...."
        }
        --$ugum@r--
      From perldoc -f pack:
      Q An unsigned quad value. (Quads are available only if your system supports 64-bit integer values _and_ if Perl has been compiled to support those. Causes a fatal error otherwise.)

      (($_="Mzz ojjdloobnf jt uvy5502383")=~y~b-zg2-5c96-81~a-z0-9~s)=~s~~~s; print
        I know that "perldoc -f pack"
        why it shows this error "Invalid type 'Q' "?

        --$ugum@r--