Mercurial > hg > xemacs-beta
diff lisp/tl/tl-num.el @ 4:b82b59fe008d r19-15b3
Import from CVS: tag r19-15b3
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:46:56 +0200 |
parents | |
children | 4b173ad71786 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/tl/tl-num.el Mon Aug 13 08:46:56 2007 +0200 @@ -0,0 +1,71 @@ +;;; +;;; $Id: tl-num.el,v 1.1.1.1 1996/12/18 03:55:31 steve Exp $ +;;; +;;; by MORIOKA Tomohiko <morioka@jaist.ac.jp>, 1993/10/4 +;;; + +(require 'emu) +(require 'tl-seq) + + +;;; @ n base +;;; + +(defun char-to-int (chr) + "Convert n base character CHR to integer (n <= 36). [tl-num]" + (cond ((and (<= ?0 chr)(<= chr ?9)) (- chr ?0)) + ((and (<= ?A chr)(<= chr ?Z)) (+ (- chr ?A) 10)) + ((and (<= ?a chr)(<= chr ?z)) (+ (- chr ?a) 10)) + )) + +(defun int-to-char (n) + "Convert integer N to n base character (n <= 36). [tl-num]" + (if (< n 10) + (+ ?0 n) + (+ ?A (- n 10)) + )) + +(defun base-seq-to-int (base seq) + "Convert n base number sequence SEQ to number. [tl-num]" + (foldl (function + (lambda (n m) + (+ (* n base) m) + )) + 0 seq)) + +(defun base-char-seq-to-int (base seq) + "Convert n base char sequence SEQ to number. [tl-num]" + (foldl (function + (lambda (n chr) + (+ (* n base)(char-to-int chr)) + )) + 0 seq)) + + +;;; @ Hex +;;; + +(defun hex-char-to-number (chr) + "Convert hex character CHR to number. [tl-num]" + (cond ((and (<= ?0 chr)(<= chr ?9)) (- chr ?0)) + ((and (<= ?A chr)(<= chr ?F)) (+ (- chr ?A) 10)) + ((and (<= ?a chr)(<= chr ?f)) (+ (- chr ?a) 10)) + )) + +(defalias 'number-to-hex-char 'int-to-char) + +(defun hex-seq-to-int (seq) + "Convert hex number sequence SEQ to integer. [tl-num]" + (base-seq-to-int 16 seq) + ) + +(defun hex-char-seq-to-int (seq) + "Convert hex char sequence SEQ to integer. [tl-num]" + (base-char-seq-to-int 16 seq) + ) + + +;;; @ end +;;; + +(provide 'tl-num)