procmail
[Top] [All Lists]

dec2base

2003-03-22 15:18:53
Just for fun: a way to do dec2hex (and other bases) with procmail.

Limit: (baseType * baseType) - 1 (which is what fits in 2 characters)
(so for base-16, the largest convertable number is 255)

To test:
  procmailrc -m dec2base-test.procmailrc < /dev/null


###################################
### File: dec2base-test.procmailrc
#
LOGFILE=$HOME/$_.log
LOGABSTRACT=none
VERBOSE=no

SHELL=/bin/sh
NL="
"
doLog=1

inc_rc=$HOME/dec2base.inc

baseType="16"

decVal="0"
INCLUDERC=$inc_rc

decVal="1"
INCLUDERC=$inc_rc

decVal="2"
INCLUDERC=$inc_rc

decVal="3"
INCLUDERC=$inc_rc

decVal="4"
INCLUDERC=$inc_rc

decVal="14"
INCLUDERC=$inc_rc

decVal="15"
INCLUDERC=$inc_rc

decVal="16"
INCLUDERC=$inc_rc

decVal="17"
INCLUDERC=$inc_rc

decVal="254"
INCLUDERC=$inc_rc

decVal="255"
INCLUDERC=$inc_rc

decVal="256"
INCLUDERC=$inc_rc

decVal="257"
INCLUDERC=$inc_rc

decVal="567"
INCLUDERC=$inc_rc

:0:
$_.out


#############################
### File: $HOME/dec2base.inc
#
baseChars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
recurse_rc = $_.inc

:0  # tempVal = decVal +1
*        1 ^ 0
*$ $decVal ^ 0
{ tempVal = $= }

baseVal=""


baseReg=""
baseRun=$baseType
INCLUDERC=$recurse_rc

checkReg="$baseReg."
:0
*$ checkReg ?? > $baseRun
{ baseVal=$baseVal"?" }
:0
*$ baseChars ?? ^^$baseReg\/.
{ baseVal=$baseVal$MATCH }


baseReg=""
baseRun="1"
INCLUDERC=$recurse_rc
:0
*$ baseChars ?? ^^$baseReg\/.
{ baseVal="$baseVal$MATCH" }


:0
*$ $doLog ^ 0
{ LOG="base($decVal,$baseType) = $baseVal$NL" }


#################################
### File: $HOME/dec2base.inc.inc
#
:0
*$ -$baseRun ^ 0
*$  $tempVal ^ 0
{
  baseReg   = "$baseReg."
  tempVal    = "$="
  INCLUDERC = "$_"
}


#Test-Log-output for base-16:
base(0,16) = 00
base(1,16) = 01
base(2,16) = 02
base(3,16) = 03
base(4,16) = 04
base(14,16) = 0E
base(15,16) = 0F
base(16,16) = 10
base(17,16) = 11
base(254,16) = FE
base(255,16) = FF
base(256,16) = ?G0
base(257,16) = ?G1
base(567,16) = ?Z7

#Test-Log-output for base-32:
base(0,32) = 00
base(1,32) = 01
base(2,32) = 02
base(3,32) = 03
base(4,32) = 04
base(14,32) = 0E
base(15,32) = 0F
base(16,32) = 0G
base(17,32) = 0H
base(254,32) = 7U
base(255,32) = 7V
base(256,32) = 80
base(257,32) = 81
base(567,32) = HN

-- 
Affijn, Ruud

Roken redt levens.

_______________________________________________
procmail mailing list
procmail(_at_)lists(_dot_)RWTH-Aachen(_dot_)DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/procmail

<Prev in Thread] Current Thread [Next in Thread>
  • dec2base, Ruud H.G. van Tol <=