This is a draft of a custom printer function:
(defun signed-padding (stream data colonp atsignp &optional (padding 0))
(declare (ignore colonp atsignp))
(format stream "~:[+~;-~]~v,'0d" (minusp data) padding (abs data)))
... and an example:
(values
(format nil "~v/signed-padding/" 20 330)
(format nil "~5/signed-padding/" -4))
"+00000000000000000330"
"-00004"
You can probably add additional checks and parameters.
source
share