in reply to In-place bitwise NOT?

Nobody proposed a vec solution yet. Here’s one:
use feature say; $_ = "012\xf0ABC\x0f\x00\x01\xff"; say unpack "H*"; # 303132f04142430f0001ff for (my $i = length; $i--; vec($_, $i, 8) ^= ~0) {} say unpack "H*"; # cfcecd0fbebdbcf0fffe00
Could probably be optimized for 32/64 bits. Whatever. I'm too lazy to benchmark it.

Replies are listed 'Best First'.
Re^2: In-place bitwise NOT?
by BrowserUk (Patriarch) on Jul 27, 2013 at 17:18 UTC

    That was my first attempt :)

    sub byvec { no warnings 'portable'; vec( ${ $_[0] }, $_, 64 ) ^= ~0 for 0 .. ( length( ${ $_[0] } ) / +8 ); }

    Nowhere close to tr///.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    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.