如何将二进制数据读入R,位深度为24 readBin

时间:2018-05-04 18:11:43

标签: r audio binary size bit

我有一个扩展名为.w的二进制数据文件(包含音频数据)。

我使用R中的以下代码打开了文件连接;

file1 <- file("filename.w", "rb")#打开.w二进制文件的文件连接并指定&#39; rb&#39;,读取二进制文件

file2 <- readBin(file1, double(), size = 3, endian = "big")#它处于双向量模式。

这给了我错误

Error in readBin(file1, double(), size = 3, endian = "big") : size 3 is unknown on this machine"

我选择大小3作为我有兴趣阅读24位深度。我使用转换1字节= 8位。

帮助文件readBin表示该变量每个元素只占用1,2,4,8个字节。 有人如何指定3个字节?或者有人可以帮助另一种方法将此二进制文件读入R(指定24位)。

我尝试使用不同的矢量模式integer()而不是double()但是得到了同样的错误。

我的目标是读取这个二进制文件,提取它的某些部分,然后将其写为.wav文件。

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是首先读取两个字节,然后在第三个字节上添加:

read3bytes <- function(file1) {
    first2 <- readBin(file1, "int", size = 2)
    third <- readBin(file1, "int", size = 1)

    # Shift the first two bytes one byte to the left, then add the third byte on
    bitwShiftL(first2, 8) + third
}