From 37da2899f40661e3e9631e497da8dc59b971cbd0 Mon Sep 17 00:00:00 2001 From: "Charles.Forsyth" Date: Fri, 22 Dec 2006 17:07:39 +0000 Subject: 20060303a --- appl/lib/encoding/base16.b | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 appl/lib/encoding/base16.b (limited to 'appl/lib/encoding/base16.b') diff --git a/appl/lib/encoding/base16.b b/appl/lib/encoding/base16.b new file mode 100644 index 00000000..6c91c200 --- /dev/null +++ b/appl/lib/encoding/base16.b @@ -0,0 +1,43 @@ +implement Encoding; + +include "encoding.m"; + +hex: con "0123456789ABCDEF"; + +enc(a: array of byte): string +{ + o: string; + for(i := 0; i < len a; i++){ + n := int a[i]; + o[len o] = hex[n>>4]; + o[len o] = hex[n & 16rF]; + } + return o; +} + +dec(s: string): array of byte +{ + a := array[(len s+1)/2] of byte; # upper bound + o := 0; + j := 0; + n := 0; + for(i := 0; i < len s; i++){ + c := s[i]; + n <<= 4; + case c { + '0' to '9' => + n |= c-'0'; + 'A' to 'F' => + n |= c-'A'+10; + 'a' to 'f' => + n |= c-'a'+10; + * => + continue; + } + if(++j == 2){ + a[o++] = byte n; + j = n = 0; + } + } + return a[0:o]; +} -- cgit v1.2.3