(define (hex-string->bytes hexstr) ;; convert a string like "a745ff12" to a bytevector (let ((result (make-bytevector (/ (string-length hexstr) 2)))) (let loop ((hexs (string->list hexstr)) (i 0)) (if (< (length hexs) 2) result (let ((ascii (string->number (string (car hexs) (cadr hexs)) 16))) (bytevector-u8-set! result i ascii) (loop (cddr hexs) (+ i 1)))))))