############################################################################ # # File: mapbit.icn # # Subject: Procedures to map string into bit representation # # Author: Ralph E. Griswold # # Date: December 5, 1995 # ############################################################################ # # This file is in the public domain. # ############################################################################ # # The procedure mapbit(s) produces a string of zeros and ones # corresponding to the bit patterns for the characters of s. For # example, mapbit("Axe") produces "010000010111100001100101". # ############################################################################ # # Links: strings # ############################################################################ link strings procedure bilit(text,alpha,first,second) return collate(map(text,alpha,first),map(text,alpha,second)) end procedure mapbit(s) static all, base16, hex1, hex2, quad1, quad2, pair1, pair2 # The following is a bit ornate, but then ... . It could be # made more compact (and cryptic) by using lists of templates # and parameterizing the initialization. initial { all := string(&cset) base16 := "0123456789ABCDEF" hex1 := "" every hex1 ||:= repl(!base16,16) hex2 := repl(base16,16) quad1 := "" every quad1 ||:= repl(!left(base16,4),4) quad2 := repl(left(base16,4),4) pair1 := "" every pair1 ||:= repl(!left(base16,2),2) pair2 := repl(left(base16,2),2) } s := bilit(bilit(bilit(s,all,hex1,hex2),base16,quad1,quad2),left(base16,4), pair1,pair2) return s end