Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Racket 如何将C字符数组直接转换为字节_Racket - Fatal编程技术网

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

Racket 如何将C字符数组直接转换为字节,racket,Racket,如果定义了\u名称,则我使用c字符串样式: (define-cstruct _ifreq ([ifr_name (_array _byte IFNAMSIZE)] ;; ommited ... )) 我可以通过(array->ref)和递归从中创建列表来访问单个元素。然后使用(list->bytes)获取lisp数据结构。我很好奇是否有一种更简单的方法不需要创建列表 Racket为这种场合提供了可变字节字符串 (r

如果定义了\u名称,则我使用c字符串样式:

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

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

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