EDIT: (use setf instead of dpb, because dpb didn’t work for some reason.)
(let ((version0))
(dotimes (i 4 #|<- Read 4 Bytes.|# version) (setf (ldb (byte 8 (* 8 i)) version) (read-byte input-stream))))
)
``
~~That code was less complicated than I thought it would be...~~
I can't figure out how to read multiple bytes. I'm trying to read a 32-bit integer so that I can store it to be used by a class.
My (truncated) code:
```
(let ((version-buffer (byte 4 0)))
(read-sequence version-buffer input-stream)
(cond
((> version-buffer 10) (read-sequence minor-version-buffer input-stream)) (t t))
(setf (navigation-mesh-version temp-mesh) `(,(version-buffer)) )
)
```
EDIT: Truncated the code further.
I'm trying to read a string and verify it's magic number (0xFEEDFACE); but I don't know how to insert an ascii character (as a number) into strings.
Here is my code:
```
;; Parser library for the Source Engine Nav mesh format.
(defun parse-nav-string (input-string) "Parses string as Nav file."
;; Test for magic string 0xFEEDFACE.
(cond
(string= (subseq input-string 0 3)
(concatenate (code-char #xCE) (code-char #xFA) (code-char #xED) (code-char #xFE))
)
(t (format *error-output* "Magic string not found!") )
)
()
)
```
I managed to find a solution!
EDIT: (use
setf
instead ofdpb
, becausedpb
didn’t work for some reason.)(let ((version 0)) (dotimes (i 4 #|<- Read 4 Bytes.|# version) (setf (ldb (byte 8 (* 8 i)) version) (read-byte input-stream)))) ) `` ~~That code was less complicated than I thought it would be...~~