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)