我有一个扩展名为.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文件。
答案 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
}