home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / gnu / emacs / sources / 788 < prev    next >
Encoding:
Text File  |  1992-11-12  |  1.8 KB  |  49 lines

  1. Newsgroups: gnu.emacs.sources
  2. Path: sparky!uunet!usc!zaphod.mps.ohio-state.edu!pacific.mps.ohio-state.edu!cis.ohio-state.edu!fly.cnuce.cnr.it!pot
  3. From: pot@fly.cnuce.cnr.it (Francesco Potorti`)
  4. Subject: hexlify-buffer
  5. Message-ID: <m0mpOE6-0001D3C@fly.cnuce.cnr.IT>
  6. Sender: daemon@cis.ohio-state.edu
  7. Reply-To: pot@cnuce.cnr.it
  8. Organization: Source only  Discussion and requests in gnu.emacs.help.
  9. Distribution: gnu
  10. Date: Thu, 12 Nov 1992 12:10:00 GMT
  11. Lines: 36
  12.  
  13. This version of hexlify-buffer is twice as fast as the original one in
  14. hexl.el.
  15.  
  16. Anyone out there is able to make it better (it is always too S L  O   W)?
  17.  
  18. (defun hexlify-buffer ()
  19.   "Convert a binary buffer to hexl format"
  20.   (interactive)
  21.   (goto-char (point-min))
  22.   (let (len
  23.     (address 0)
  24.     (chars "")
  25.     (print-chars
  26.      (vconcat
  27.       (mapcar 'char-to-string (make-string 32 ?.))
  28.       (mapcar 'char-to-string " !\"#$%&'()*+,-./0123456789:;<=>?@")
  29.       (mapcar 'char-to-string "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`")
  30.       (mapcar 'char-to-string "abcdefghijklmnopqrstuvwxyz{|}~")
  31.       (mapcar 'char-to-string (make-string 128 ?.)))))
  32.     (while (not (eobp))
  33.       (setq len (min 16 (- (point-max) (point))))
  34.       (setq chars (buffer-substring (point) (+ (point) len)))
  35.       (delete-char len)
  36.       (insert (format "%08x:    " address)
  37.           (mapconcat '(lambda (arg) (format "%02x" arg)) chars ""))
  38.       (if (eobp) (insert-char ?  (* 2 (- 16 len))))
  39.       (backward-char 28)
  40.       (looking-at
  41.       "\\(....\\)\\(....\\)\\(....\\)\\(....\\)\\(....\\)\\(....\\)\\(....\\)")
  42.       (replace-match " \\1 \\2 \\3  \\4 \\5 \\6 \\7     '")
  43.       (insert (mapconcat '(lambda (c) (aref print-chars c)) chars "") "'\n")
  44.       (setq address (+ address 16)))))
  45.  
  46.             Francesco Potorti`    | pot@cnuce.cnr.IT (Internet)
  47.                      | 39369::pot       (DECnet)
  48.                     | +39-50-593203    (voice)
  49.