;; Pretty-printing of IPv4 Internet addresses ;;; This file is part of the Scheme Untergrund Networking package. ;;; Copyright (c) 1998 by Mike Sperber. ;;; For copyright information, see the file COPYING which comes with ;;; the distribution. ;; ADDRESS address to pretty-print ;; SEPERATOR optional, defaults to ".", seperator between address-parts ;; Example: ;; (format-internet-host-address #x0a00ffff) ;; ==> "10.0.255.255" ;; (format-internet-host-address #x0a00ffff ":") ;; ==> "10:0:255:255" (define (format-internet-host-address address . maybe-separator) (let ((extract (lambda (shift) (number->string (bitwise-and (arithmetic-shift address (- shift)) 255))))) (let-optionals maybe-separator ((separator ".")) (string-append (extract 24) separator (extract 16) separator (extract 8) separator (extract 0))))) ;; does pretty-print of ports ;; Example: ;; (format-port #x0aff) ;; => "10,255" (define (format-port port) (string-append (number->string (bitwise-and (arithmetic-shift port -8) 255)) "," (number->string (bitwise-and port 255))))