>perl -wMstrict -le "my $bits = unpack 'b*', pack 'N*', 0x01020304, 0x11121314; print qq{'$bits'}; ;; $bits =~ s{ ((.) \2*) } { ($2 eq '1' ? '-' : '') . length($1) . ',' }xmsge; print qq{'$bits'}; ;; my @n = map 0+$_, split /,/, $bits; print qq{@n}; " '1000000001000000110000000010000010001000010010001100100000101000' '-1,8,-1,6,-2,8,-1,5,-1,3,-1,4,-1,2,-1,3,-2,2,-1,5,-1,1,-1,3,' -1 8 -1 6 -2 8 -1 5 -1 3 -1 4 -1 2 -1 3 -2 2 -1 5 -1 1 -1 3 #### >perl -wMstrict -le "my $bits = unpack 'b*', pack 'N*', 0x01020304, 0x11121314; print qq{'$bits'}; ;; my @n = map { my $l = length; chop eq '1' ? -$l : $l; } $bits =~ m{ 0+ | 1+ }xmsg ; print qq{@n}; " '1000000001000000110000000010000010001000010010001100100000101000' -1 8 -1 6 -2 8 -1 5 -1 3 -1 4 -1 2 -1 3 -2 2 -1 5 -1 1 -1 3