我正在序列化数据,可能是一个整数,一个对象(列表)和其他嵌套对象,并试图选择使用什么方法。其中,第一种是递归地创建字节向量,并将它们在调用函数中复制到一个较大的字节向量中;第二种是使用某种我可以写入的流。最终,尽管有选择,我还是能够在任何可能发生的进一步处理中使用生成的二进制数组,例如。g。我会压缩输出数据并通过网络发送,或者只是将其中的一些部分写入一个文件。
我想保持足够的功能(或完全),但实现快速序列化程序。我在用
Racket
非常感谢。
更新:
以下是我在找到解决方案后添加的示例,这样用户就可以节省一些搜索数据写入方式的时间:]
write-byte
和
write-bytes
当你需要写八位字节的时候,它们特别有用。
> (bytes? (with-output-to-bytes (lambda () (write-byte 42))))
#t
> (bytevector? (with-output-to-bytes (lambda () (write-byte 42))))
#t
> (bytevector->u8-list (with-output-to-bytes (lambda () (write-byte 42))))
{42}
> (bytes->list (with-output-to-bytes (lambda () (write-byte 42) (write-bytes (integer->integer-bytes #x101CA75 4 #f #t)))))
(42 1 1 202 117)