Nyquist / XLISP 2.0 -
Contents |
Tutorials |
Examples |
Reference
Hexadecimal Integer Numbers
XLISP provides the #x
read-macro for hexadecimal numbers:
#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
- (hex-string integer [all])
- integer - an integer expression
all - a boolean expression
returns - the integer in hexadecimal form as string
(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 'hex-string' function converts the 'integer' argument
into hexadecimal form and returns is as a string. If the
optional 'all' argument is not given or
NIL, leading zeros are not included in
the string. If the optional 'all' argument is
non-NIL, all digits of the
internal representation of the 'integer' argument, including leading zeros,
are contained in the string. This is useful for debugging integer overflow
and bit-wise functions.
- (hex integer [all])
- integer - an integer expression
all - a boolean expression
prints - the integer in hexadecimal form
returns - the integer argument
(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 read-macro
this can be used for interactive hexadecimal computations.
> (hex 12345678)
#xbc614e
12345678
> (hex (+ #x1f #xa3))
#xc2
194
Back to top
Nyquist / XLISP 2.0 -
Contents |
Tutorials |
Examples |
Reference