changeset 28657:02edb3ce6745

(hexl-insert-hex-string): New command.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 19 Apr 2000 19:10:46 +0000
parents ebc349d16eb9
children bb5083cf0565
files lisp/hexl.el
diffstat 1 files changed, 25 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/hexl.el	Wed Apr 19 19:08:28 2000 +0000
+++ b/lisp/hexl.el	Wed Apr 19 19:10:46 2000 +0000
@@ -717,6 +717,31 @@
 	(error "Hex number out of range")
       (hexl-insert-char num arg))))
 
+(defun hexl-insert-hex-string (str arg)
+  "Insert hexadecimal string STR at point ARG times.
+Embedded whitespace, dashes, and periods in the string are ignored."
+  (interactive "sHex string: \np")
+  (setq str (replace-regexp-in-string "[- \t.]" "" str))
+  (let ((chars '()))
+    (let ((len (length str))
+	  (idx 0))
+      (if (eq (logand len 1) 1)
+	  (let ((num (hexl-hex-string-to-integer (substring str 0 1))))
+	    (setq chars (cons num chars))
+	    (setq idx 1)))
+      (while (< idx len)
+	(let* ((nidx (+ idx 2))
+	       (num (hexl-hex-string-to-integer (substring str idx nidx))))
+	  (setq chars (cons num chars))
+	  (setq idx nidx))))
+    (setq chars (nreverse chars))
+    (while (> arg 0)
+      (let ((chars chars))
+	(while chars
+	  (hexl-insert-char (car chars) 1)
+	  (setq chars (cdr chars))))
+      (setq arg (- arg 1)))))
+
 (defun hexl-insert-decimal-char (arg)
   "Insert a ASCII char ARG times at point for a given decimal number."
   (interactive "p")