Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: (GOLF) splitting an hexadecimal colour triplet

by wog (Curate)
on Jul 05, 2001 at 20:14 UTC ( [id://94152]=note: print w/replies, xml ) Need Help??


in reply to (GOLF) splitting an hexadecimal colour triplet

Much too much code. (Here's one that's 27 chars.)

sub hexa_triplet { map{($_[0]>>$_)&255}16,8,0 }

update: Or even another way at 24 chars (like my other one was reduced to by MeowChow) 23 chars:

sub hexa_triplet { unpack"xC3",pack"N",@_ }

-- perl -e '$|--;$.=q$.$;while($i!=0){$i=(time-$^T)%60;print"\r".$.x$i}'

Replies are listed 'Best First'.
Re: Re: (GOLF) splitting an hexadecimal colour triplet
by MeowChow (Vicar) on Jul 05, 2001 at 21:32 UTC
    You can write this as (24 chars):
    map$_[0]>>$_&255,16,8,0
       MeowChow                                   
                   s aamecha.s a..a\u$&owag.print
Re: Re: (GOLF) splitting an hexadecimal colour triplet
by tachyon (Chancellor) on Jul 05, 2001 at 21:24 UTC

    Clever use of binary bit wog. Misunderstood da question - scratch the rest. Off to wipe egg off face and eat some humble pie. I like the unpack pack too. You can shave a couple to 22 by dropping the quotes:

    sub hexa_triplet { unpack xC3,pack N,pop }

    cheers

    tachyon

    s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

      I think you may have misunderstood the intent of the original subroutine. Given an integer, it should produce a list of three values: red, green, and blue. It does not produce anything like "0000FF"; rather, given 0x0000FF (note the difference, BTW), it should produce the list (0, 0, 255). Which it does.

      Where you say that it is returning 00255; it actually is not. It's returning a list containing (0, 0, 255), and when you print that out, it's getting automatically joined on the empty string, and so you see 00255.

      But the actual usage is like:

      my($red, $green, $blue) = hexa_triplet(0x0000FF);
      And then the $red, $green, and $blue would be passed into GD, since that's what the OP needed this for.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (4)
As of 2024-04-19 22:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found