16 진수를 16 진수로 변환하려고합니다.16 진수를 16 진수로 변환하여 일반적인 lisp로 표시
예를 들면 다음과 같습니다.
CL-USER> (foo 0D)
#x0D
매크로 기능을 사용해야합니까?
16 진수를 16 진수로 변환하려고합니다.16 진수를 16 진수로 변환하여 일반적인 lisp로 표시
예를 들면 다음과 같습니다.
CL-USER> (foo 0D)
#x0D
매크로 기능을 사용해야합니까?
0D는 기호입니다 (기본값). SYMBOL-NAME으로 이름을 문자열로 가져옵니다. PARSE-INTEGER를 RADIX 16과 함께 사용하여 번호를 가져옵니다.
아무런 이유가없는 경우 16 진수를 기호로 나타내면됩니다.
귀하의 질문에 말한 것처럼 말이되지 않습니다. "16 진수"와 같은 것은 없습니다. "16 진수"는 숫자 프리젠 테이션 시스템의 이름입니다. 예를 들어, Rainer가 말했듯이, 입력이 심볼 인 것처럼 보이지만 모든 "16 진수"가 기호는 아닙니다. 아마도 (foo 10)의 결과가 # x10이 되길 원하고, 여기서 입력은 숫자입니다. 따라서 입력이 Lisp 리더에 의해 (기본 -10) 숫자로 해석된다면 다시 읽은 숫자 16으로 변환해야합니다.
또 다른 점은 0D를 이해하면 기호로 사용하면 (foo 0D) UNBOUND-VARIABLE 오류가 발생합니다. foo에 0D를 입력하려면 (foo '0D)를 써야합니다.
출력 측면에서 "#x ..."로 인쇄되는 네이티브 Lisp 객체가 있다고 생각하지 않습니다. 16 진수를 인쇄하려면 인쇄베이스을 16에 바인드하지만 그 앞에 sharpsign-x가 보이지 않습니다.
이는 다소 다른 방식으로 문제를 제안합니다.
cl-user(162): (foo 38)
#x38
cl-user(163): (foo '0D)
#x0D
나는 이것이 재미있는 느낌이 :
(defstruct (pseudo-hex (:print-object pseudo-hex-print))
thing)
(defun pseudo-hex-print (h srm)
(format srm "#x~a" (pseudo-hex-thing h)))
(defun foo (x)
(make-pseudo-hex :thing x))
이제 우리는 다음을 얻을 : 우리는 는 인쇄가 #x를 시작으로, 그리고 foo는 그러한 객체를 생성 한 수행하는 새로운 데이터 유형을 정의 라파엘이 묻고있는 것이 아닙니다!
매크로 기능이란 무엇입니까? –
참조 http://stackoverflow.com/questions/1521509/common-lisp-integer-to-hex-conversion –
매크로 함수는 매크로라고 말합니다. (defmacro) – jeon