如何直接将C char数组转换为字节

时间:2017-04-09 12:22:00

标签: racket

我有c-string样式array if_name defined:

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

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

1 个答案:

答案 0 :(得分:1)

Racket带有可变字节字符串,适合这种场合!

(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*))