File: tl-num.el

package info (click to toggle)
xemacs20 20.4-13
  • links: PTS
  • area: main
  • in suites: slink
  • size: 67,324 kB
  • ctags: 57,643
  • sloc: lisp: 586,197; ansic: 184,662; sh: 4,296; asm: 3,179; makefile: 2,021; perl: 1,059; csh: 96; sed: 22
file content (71 lines) | stat: -rw-r--r-- 1,514 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
;;;
;;; $Id: tl-num.el,v 6.2 1995/08/26 18:28:52 morioka Exp $
;;;
;;; by MORIOKA Tomohiko <morioka@jaist.ac.jp>, 1993/10/4
;;;

(require 'emu)
(require 'tl-seq)


;;; @ n base
;;;

(defun n-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-n-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)(n-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-n-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)