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