(and N (exit N)))
(global 'die)
+(define (char2hex STR)
+ (join (map (curry format "%2x") (map char (explode STR)))))
+(global 'char2hex)
+
;; Print binary byte as octal or as ASCII character [32-126]
(define (octal-byte x)
(if (and (> x 31) (< x 127)) (char x) (format "\\%o" x)))
+(global 'octal-byte)
;; Print string as binary octals
(define (octals-string S)
(join (map octal-byte (unpack (dup "b" (length S)) S))))
-(global 'octals-string 'octal-byte)
+(global 'octals-string)
+
+;; Return byte code as printable or as code.
+(define (human-byte B)
+ (if (and (> B 32) (< B 127)) (char B) B))
+(global 'human-byte)
+
+;; Return a packed encoding of a list of bytes, joining string elements
+(define (human-bytes BL)
+ (let ((OUT '()) (X nil))
+ (dolist (B (map human-byte BL))
+ (if (string? B) (if X (extend X B) (setf X B))
+ (begin (when (string? X) (push X OUT -1))
+ (push B OUT -1)
+ (setf X nil))))
+ (when (string? X) (push X OUT -1))
+ OUT))
+(global 'human-bytes)
+
+"misc.lsp"