perlfaq4 - tweaks for "How do I convert between numeric representations"

[email protected] (Iain Truskett)
Newsgroups perl.perlfaq.workers
Message-ID <[email protected]>
Attached are some diffs that accomplish the following things for
the radix conversion.

1. Some common synonyms added to the heading (for keyword searches)

2. Consistent use of ':' on the 'Using...' parts.

3. Useless use of sprintf removed.

4. Mention both %X and %x for dec->hex.

5. Mention ord's ability to convert binary numbers.

6. Mention sprintf's %b on 5.6+.


cheers,
-- 
Iain.
radix.patch (text/plain, 2.8 KB)
--- perlfaq/perlfaq4.pod	2003-08-23 16:08:43.000000000 +1000
+++ pod/perlfaq4.pod	2003-08-23 23:22:24.000000000 +1000
@@ -102,7 +102,7 @@ Perl numbers whose absolute values are i
 machines) will work pretty much like mathematical integers.  Other numbers
 are not guaranteed.
 
-=head2 How do I convert between numeric representations?
+=head2 How do I convert between numeric representations/bases/radixes?
 
 As always with Perl there is more than one way to do it.  Below
 are a few examples of approaches to making common conversions
@@ -121,18 +121,15 @@ programmers the notation might be famili
 
 Using perl's built in conversion of 0x notation:
 
-    $int = 0xDEADBEEF;
-    $dec = sprintf("%d", $int);
+    $dec = 0xDEADBEEF;
 
 Using the hex function:
 
-    $int = hex("DEADBEEF");
-    $dec = sprintf("%d", $int);
+    $dec = hex("DEADBEEF");
 
 Using pack:
 
-    $int = unpack("N", pack("H8", substr("0" x 8 . "DEADBEEF", -8)));
-    $dec = sprintf("%d", $int);
+    $dec = unpack("N", pack("H8", substr("0" x 8 . "DEADBEEF", -8)));
 
 Using the CPAN module Bit::Vector:
 
@@ -144,13 +141,14 @@ Using the CPAN module Bit::Vector:
 
 Using sprintf:
 
-    $hex = sprintf("%X", 3735928559);
+    $hex = sprintf("%X", 3735928559); # upper case A-F
+    $hex = sprintf("%x", 3735928559); # lower case a-f
 
-Using unpack
+Using unpack:
 
     $hex = unpack("H*", pack("N", 3735928559));
 
-Using Bit::Vector
+Using Bit::Vector:
 
     use Bit::Vector;
     $vec = Bit::Vector->new_Dec(32, -559038737);
@@ -167,13 +165,11 @@ And Bit::Vector supports odd bit counts:
 
 Using Perl's built in conversion of numbers with leading zeros:
 
-    $int = 033653337357; # note the leading 0!
-    $dec = sprintf("%d", $int);
+    $dec = 033653337357; # note the leading 0!
 
 Using the oct function:
 
-    $int = oct("33653337357");
-    $dec = sprintf("%d", $int);
+    $dec = oct("33653337357");
 
 Using Bit::Vector:
 
@@ -188,7 +184,7 @@ Using sprintf:
 
     $oct = sprintf("%o", 3735928559);
 
-Using Bit::Vector
+Using Bit::Vector:
 
     use Bit::Vector;
     $vec = Bit::Vector->new_Dec(32, -559038737);
@@ -199,13 +195,18 @@ Using Bit::Vector
 Perl 5.6 lets you write binary numbers directly with
 the 0b notation:
 
-	$number = 0b10110110;
+    $number = 0b10110110;
+
+Using ord:
+
+    my $input = "10110110";
+    $decimal = ord( "0b$input" );
 
-Using pack and ord
+Using pack and ord:
 
     $decimal = ord(pack('B8', '10110110'));
 
-Using pack and unpack for larger strings
+Using pack and unpack for larger strings:
 
     $int = unpack("N", pack("B32",
 	substr("0" x 32 . "11110101011011011111011101111", -32)));
@@ -220,6 +221,10 @@ Using Bit::Vector:
 
 =item How do I convert from decimal to binary
 
+Using sprintf (perl 5.6+):
+
+    $bin = sprintf("%b", 3735928559);
+
 Using unpack;
 
     $bin = unpack("B*", pack("N", 3735928559));
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.