;;;; to-hex.scm -*- Hen -*- ;;;; Kon Lovett, Sep '10 ;;;; Kon Lovett, Sep '17 (module to-hex (;export mem_to_hex s8vec_to_hex u8vec_to_hex blob_to_hex str_to_hex) (import scheme) (import chicken foreign) ;;; #> static void bv_to_hex( uint8_t *out, uint8_t *in, int off, int len ) { static char digits[] = "0123456789abcdef"; in += off; while( len-- ) { *out++ = digits[ *in >> 4 ]; *out++ = digits[ *in++ & 0x0f ]; } } <# (define C_str_to_hex (foreign-lambda void "bv_to_hex" nonnull-scheme-pointer nonnull-scheme-pointer int int)) (define C_blob_to_hex (foreign-lambda void "bv_to_hex" nonnull-scheme-pointer nonnull-blob int int)) (define C_u8vec_to_hex (foreign-lambda void "bv_to_hex" nonnull-scheme-pointer nonnull-u8vector int int)) (define C_s8vec_to_hex (foreign-lambda* void ((nonnull-scheme-pointer out) (nonnull-s8vector in) (int off) (int len)) "bv_to_hex(out, (uint8_t *)in, off, len);")) (define C_mem_to_hex (foreign-lambda void "bv_to_hex" nonnull-scheme-pointer nonnull-c-pointer int int)) ;;; (define (str_to_hex out in off len) (C_str_to_hex out in off len) out ) (define (blob_to_hex out in off len) (C_blob_to_hex out in off len) out ) (define (u8vec_to_hex out in off len) (C_u8vec_to_hex out in off len) out ) (define (s8vec_to_hex out in off len) (C_s8vec_to_hex out in off len) out ) (define (mem_to_hex out in off len) (C_mem_to_hex out in off len) out ) ) ;module to-hex