Re: [MacPerl] How can I display a number in dual representation, e.g. 29 --> 11101?

[email protected] (Joshua Juran) Fri, 4 Mar 2005 07:33:56 -0500
Newsgroups perl.macperl
Message-ID <[email protected]>
--Apple-Mail-20-635934932
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=US-ASCII;
	format=flowed

On Mar 4, 2005, at 6:28 AM, Detlef Lindenthal wrote:

> What would be the easiest way to display a number as dual / binary 
> number?
> For example: 29 is to be displayed as 11101.
>
>
> In PHP this would work:
> <?
> printf ("%b", 29);
> ?>
>
> but not so in Perl.
> Any idea?

First, I would convert the number to a string of hex digits using 
sprintf("%x", $num).  Then, do a regex substitution in eval-mode where 
each character x is used as a key into a hash whose value replaces it.  
The hash will contain:

'0' => '0000',
'1' => '0001',
...
'f' => '1111'

You can create the hash using a BEGIN clause so it's only done once.  
After that, no loops!

Josh

-- 
Joshua Juran
Metamage Software Creations - Mac Software and Consulting
http://www.metamage.com/

                * Creation at the highest state of the art *



--Apple-Mail-20-635934932
Content-Transfer-Encoding: base64
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Disposition: attachment;
	filename=smime.p7s

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGHjCCAtcw
ggJAoAMCAQICAw4lcjANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh
d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt
YWlsIElzc3VpbmcgQ0EwHhcNMDUwMjI4MDc1OTA1WhcNMDYwMjI4MDc1OTA1WjBHMR8wHQYDVQQD
ExZUaGF3dGUgRnJlZW1haWwgTWVtYmVyMSQwIgYJKoZIhvcNAQkBFhV3YW5kZXJlckBtZXRhbWFn
ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQChAgg3rr0XY64GsOU3Ryn6lfTN
2TwjCgT1g8f0biU+ODR02hEBAAjsXIQlD2MowcgTu3mZcG06KJxqJaylZBs/3Z7l+duoA0NGsa/j
as/6GmHTEiurQofQ1GrvTkV6B9fJnTfoxiY7bZKyPiRlarOZ162Gs/YWkB7PeJmgEKM4jZ8zD9mZ
x+gMcACyBy8j+3lkgdlDM0CA+UJz7oqG1Rn9VsWupkGOYcnUXrHYZ/h6ilhZRiUsmqvA0LUnJEfc
QIE5UzR1EMhjBgwUB+4Z+WHK2JAtJJTw2kVA9+w5XFUm4CPv219KqETNRtwu0HVmEGfkvyylohhb
2uXzThYYgKfxAgMBAAGjMjAwMCAGA1UdEQQZMBeBFXdhbmRlcmVyQG1ldGFtYWdlLmNvbTAMBgNV
HRMBAf8EAjAAMA0GCSqGSIb3DQEBBAUAA4GBABO4LLsLjRyzkdlF5czB4INbGwBAefsONnvcfPCb
VTxMYmkzMV0qw1u/HiJ3hSobiAmva6/lIdsuaQlO60FmyHq/UR8Lgw143wvTptLk4Ff/voITt1Pt
iFymvYx9Lal4VTrUgQCOvjXwAdfYxJISE1LMabVIA8UdKo7tGR35rlHWMIIDPzCCAqigAwIBAgIB
DTANBgkqhkiG9w0BAQUFADCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTES
MBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMf
Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFs
IEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29t
MB4XDTAzMDcxNzAwMDAwMFoXDTEzMDcxNjIzNTk1OVowYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBG
cmVlbWFpbCBJc3N1aW5nIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEpjxVc1X7TrnK
mVoeaMB1BHCd3+n/ox7svc31W/Iadr1/DDph8r9RzgHU5VAKMNcCY1osiRVwjt3J8CuFWqo/cVbL
rzwLB+fxH5E2JCoTzyvV84J3PQO+K/67GD4Hv0CAAmTXp6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZ
cmC3+wIDAQABo4GUMIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAwQwYDVR0fBDwwOjA4oDagNIYyaHR0
cDovL2NybC50aGF3dGUuY29tL1RoYXd0ZVBlcnNvbmFsRnJlZW1haWxDQS5jcmwwCwYDVR0PBAQD
AgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRlTGFiZWwyLTEzODANBgkqhkiG9w0B
AQUFAAOBgQBIjNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82L8D0HFAgk3A8/a3h
YWLD2ToZfoSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowgT2Vfldr394fWxghOrvbqNOUQGls1
TXfjViF4gtwhGTXeJLHTHUb/XV9lTzGCAucwggLjAgEBMGkwYjELMAkGA1UEBhMCWkExJTAjBgNV
BAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBAgMOJXIwCQYFKw4DAhoFAKCCAVMwGAYJKoZIhvcNAQkDMQsG
CSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDUwMzA0MTIzMzU3WjAjBgkqhkiG9w0BCQQxFgQU
6elCDPKtDl91JkKDRf+jBo3NsBQweAYJKwYBBAGCNxAEMWswaTBiMQswCQYDVQQGEwJaQTElMCMG
A1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNv
bmFsIEZyZWVtYWlsIElzc3VpbmcgQ0ECAw4lcjB6BgsqhkiG9w0BCRACCzFroGkwYjELMAkGA1UE
BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1Ro
YXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAgMOJXIwDQYJKoZIhvcNAQEBBQAEggEA
VK/+79g+ZYxKEN0ruuzqlirBZtZV+hGtJ/o5zyS8NhRVIqWTASlkg1porgSCdwHINnV/xfoR65pA
yxx0ns2QGWoGsc5dFU8VHK6gEy4mbnEF/ywBP8GWnJ+kM6eKaGovErdrFzmfDKvr3v0S33CRbRd0
QsviErD6MR/AbXvYWt2H2RBQUcM3b4yTaBMLWAZNe4k+EcUZX8o7YA3YT5PWvWMUhZuEgxJWw/yK
X+MtsChICb1NqZMkg+FZ7v9oeD9izoFYQbOK/NpH6TH5t2VM6fNndXNjEmVo2pP5JlFY5MgO/105
PTyknF1q/EhDl44nQj8iUX+PGUaT/9kpV+lF1gAAAAAAAA==

--Apple-Mail-20-635934932--