【发布时间】:2011-03-22 03:39:12
【问题描述】:
我正在序列化可能是整数、带有其他嵌套对象的对象(列表)的数据,并尝试选择要使用的方法。两种,第一种是递归创建字节向量,并在调用函数中将它们复制到更大的单个字节向量中;第二个是使用某种我可以写入的流。最终,尽管有选择,我将能够在任何可能发生的进一步处理中使用生成的二进制数组,例如。 G。我会压缩输出数据并通过网络发送,或者只是将部分数据写入文件。
我希望在实现快速序列化程序的同时保持足够的功能(或完全)。我正在使用Racket,尽管任何其他 Scheme 实现也可以。
谢谢。
更新:
以下是我找到解决方案后添加的示例,以便用户节省一些时间来寻找如何写入数据的方式:]
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)
【问题讨论】:
标签: performance serialization functional-programming scheme racket