繁体   English   中英

如何将`raw`转换为R中的整数向量?

[英]How do I convert a `raw` into a vector of integers in R?

我需要通过JRI将原始数据传递回Java,但它不支持原始数据,只支持其他各种矢量类型(例如整数)。 如何将原始(字节向量)转换为整数向量?

我尝试将数据作为字符串向量传回,但由于JRI没有正确解码字符串(例如'\\ x89'被丢弃为“”),因此会中断。

如果效率更高(未装箱)也会很好。 as.integer不起作用 - 它不返回数组中字符的字节值,更不用说rawToChar为nuls产生“”。

更进一步,您可以直接从原始向量读取Bin。 所以我们可以:

> raw
[1] 2b 97 53 eb 86 b9 4a c6 6c ca 40 80 06 94 bc 08 3a fb bc f4
> readBin(raw, what='integer', n=length(raw)/4)
[1]  -346843349  -968181370 -2143237524   146576390  -188941510  

这个问题已经很老了,但对于那些(像我一样)在寻找答案时遇到这个问题的人:as.integer(raw.vec)效果很好。

f <- file("/tmp/a.out", "rb")
seek(f, 0, "end")
f.size <- seek(f, NA, "start")
seek(f, 0, "start")
raw.vec <- readBin(f, 'raw', f.size, 1, signed=FALSE)
close(f)
bytes <- as.integer(raw.vec)

请参阅rawToChar文档:

rawToChar将原始字节转换为单个字符串或单个字节的字符向量(“”表示0)。

当然,一旦你设法将它变成character ,你可以通过as.integer方法轻松地将它转换为整数,但要小心

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM