Skip to content

Instantly share code, notes, and snippets.

@kosh04
Created May 30, 2010 15:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kosh04/419119 to your computer and use it in GitHub Desktop.
Save kosh04/419119 to your computer and use it in GitHub Desktop.
xd.lsp - 16進ダンプツール (hexdump -C風味)
#!/usr/bin/newlisp
;; Hex dump tool
;; Usage: newlisp xd.lsp < FILENAME
(constant 'stdin 0)
(define-macro (loop)
(let ((return throw))
(catch (while true
(map eval (args))))))
(setq offset 0)
(loop
(or (read stdin s 16) (return 'eof))
;; ADDRESS
(print (format "%08X " offset))
;; HEXDUMP
(print (format (dup "%02X " (length s))
(unpack (dup "b" (length s)) s))
(dup " " (- 16 (length s))))
;; CHARACTER
(print " |" (replace "[^[:print:]]" s "." 0) "|\n")
(++ offset (length s)))
(exit)
@kosh04
Copy link
Author

kosh04 commented Jul 28, 2010

read関数が指定したバイト数より小さい場合でも入力を受けつけるのがちょっと気になる…。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment