XLISP provides the #x
#x0 => 0 #x8 => 8 #x10 => 16 #x1 => 1 #x9 => 9 #x11 => 17 #x2 => 2 #xa => 10 #x12 => 18 #x3 => 3 #xb => 11 #x13 => 19 #x4 => 4 #xc => 12 #x14 => 20 #x5 => 5 #xd => 13 #x15 => 21 #x6 => 6 #xe => 14 #x16 => 22 #x7 => 7 #xf => 15 #x17 => 23
(defun hex-string (integer &optional all)
  (if (integerp integer)
      (let ((fmt (if all
                     (or (dolist (bits '(16 32 64 128) nil)
                           (let ((fixnum (round (expt 2.0 (1- bits)))))
                             (and (plusp (1- fixnum))
                                  (minusp fixnum)
                                  (return (format nil "%.~ax" (/ bits 4))))))
                         (error "integer limit not found"))
                     "%x")))
        (progv '(*integer-format*) (list fmt)
          (format nil "~a" integer)))
      (error "not an integer" integer)))
The '
(defun hex (integer &optional all)
  (if (integerp integer)
      (format t "#x~a~%" (hex-string integer all))
      (format t ";; not an integer~%"))
  integer)
The 'hex' function prints the 'integer' argument in hexadecimal form on
the screen. Together with the
#x 
> (hex 12345678) #xbc614e 12345678 > (hex (+ #x1f #xa3)) #xc2 194