http://www.perlmonks.org?node_id=157371


in reply to How do I convert from decimal to 2's Complement

sub dec_bin2s { return unpack "B8", pack "c", shift; }

Replies are listed 'Best First'.
Re: Re: How do I convert from decimal to 2's Complement
by mdillon (Priest) on Apr 08, 2002 at 06:34 UTC
    This one is correct (as I'm sure I0 knows).

    From perldoc -f pack:

    c   A signed char value.
    ...
    i   A signed integer value.
        (This 'integer' is at least 32 bits wide.  Its exact
        size depends on what a local C compiler calls 'int',
        and may even be larger than the 'long' described in
        the next item.)
    
    The question asks specifically for signed 8-bit, which is "c", a signed char value (8 bits). "At least 32 bits" is not 8 bits.