# # Software from the book "Inferno Programming with Limbo" # published by John Wiley & Sons, January 2003. # # p. Stanley-Marbell # implement Char2bytes; include "sys.m"; include "draw.m"; sys : Sys; Char2bytes : module { init : fn(nil : ref Draw->Context, nil : list of string); }; init(nil : ref Draw->Context, nil : list of string) { i, n : int; sys = load Sys Sys->PATH; mu := array [Sys->UTFmax] of byte; if ((n = sys->char2byte(16r3bc, mu, 0)) == 0) { sys->print("char2byte failed, buffer too small\n"); } else { sys->print("UTF-8 sequence is:\n"); } for (i = 0; i < n; i++) { sys->print("\t\t[%x]\n", int mu[i]); } sys->print("i.e. :\n"); for (i = 0; i < n; i++) { sys->print("\t\t["); bitprint(8, int mu[i]); sys->print("]\n"); } } bitprint(nbits, number : int) { for (i := nbits-1; i >= 0; i--) { sys->print("%d", (number >> i)&1); } }