2017-04-09 54 views
0

我有C-字符串装饰array if_name定义:如何把C的字符数组的字节直接

(define-cstruct _ifreq ([ifr_name (_array _byte IFNAMSIZE)] 
        ;; ommited ... 
        )) 

我可以访问(array->ref)单个元素,并通过递归从中创建列表。然后使用(list->bytes)来获取lisp数据结构。我很好奇,如果有一种更简单的方式,而不需要创建列表。

回答

1

球拍为这种情况提供了可变字节字符串!

(require ffi/unsafe) 

(define (byte-array->bytes array) 
    (let* ([len (array-length array)] 
     [byte* (make-bytes len)]) 
    (for ([i (in-range len)]) 
     (bytes-set! byte* i (array-ref array i))) 
    byte*))