我正在尝试读取具有浮点值的复杂数据文件.已经提供了一些处理这种格式(Met Office PP文件)的C代码,并且它做了很多小事和交换.它不起作用.它有很多权利,比如数据的大小,但返回矩阵中的数值是无意义的,有NaN和像1e38和-1e38这样的值大量洒落.
但是,我有一个二进制exe(“convsh”),可以将这些转换为netCDF,netCDF看起来很好 – 很好的风速旋转地图.
我在想的是PP文件的字节是以错误的顺序读入的.如果我可以将netCDF数据中正确返回的浮点数的字节与从C代码错误地返回的浮点数中的字节进行比较,那么我可能会找出正确的swappage.
那么是否有一个普通的R函数来转储浮点数的四个(或八个?)字节?就像是:
> as.bytes(pi) [1] 23 54 163 73 99 00 12 45 # made up values
搜索“bytes”和“float”和“binary”没有帮助.
它在C中的微不足道,我可能已经把它写在我写这篇文章的时候……
解决方法
rdyncall可能会给你你想要的东西:
library(rdyncall) as.floatraw(pi) # [1] db 0f 49 40 # attr(,"class") # [1] "floatraw"
或者也许是writeBin(pi,raw(8))?