JD,我们在digest包中通过 serialize() 到/从 raw 执行此操作 . 这很好,因为您可以在SQL和其他地方存储序列化对象 . 我实际上将它存储为RData,这对 load() (没有解析!)和 save() 更快 .
或者,如果它必须是 RawToChar() 和ascii然后使用这样的东西(直接从 help(digest) ,我们比较文件的序列化COPYING:
# test 'length' parameter and file input
fname
x
for (alg in c("sha1", "md5", "crc32")) {
# partial file
h1
h2
h3
stopifnot( identical(h1,h2), identical(h1,h3) )
# whole file
h1
h2
stopifnot( identical(h1,h2) )
}
所以你的例子变成了这个:
R> outCon
R> mychars
R> cat(mychars, file=outCon); close(outCon)
R> fname
R> readChar(fname, file.info(fname)$size)
[1] "A\n2\n133633\n131840\n13\n10\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n"
R> unserialize(charToRaw(readChar(fname, file.info(fname)$size)))
[1] 1 2 3 4 5 6 7 8 9 10
R>