将十六进制格式转换为R中的浮点数

将十六进制格式转换为R中的浮点数,r,hex,R,Hex,你能不能有人帮我把4字节的十六进制格式转换成R中的浮点数?例如,我想将“aec7a042”传输到80.39。经过大量的搜索,我在R中找不到任何东西来给我这个转换! C函数是位转换器。托辛格尔。但我需要在R里做同样的事? 有人能帮我吗?您可以使用readBin读取此值。看起来您有一个4字节的有符号浮点值。您可以阅读以下内容: readBin("aec7a042", "double", size=4) # [1] 80.39 如果这在您的R版本中不起作用,请尝试 x <- "aec7a042

你能不能有人帮我把4字节的十六进制格式转换成R中的浮点数?例如,我想将
“aec7a042”
传输到
80.39
。经过大量的搜索,我在R中找不到任何东西来给我这个转换! C函数是位转换器。托辛格尔。但我需要在R里做同样的事?
有人能帮我吗?

您可以使用
readBin
读取此值。看起来您有一个4字节的有符号浮点值。您可以阅读以下内容:

readBin("aec7a042", "double", size=4)
# [1] 80.39
如果这在您的R版本中不起作用,请尝试

x <- "aec7a042"
readBin(as.raw(strtoi(substring(x, (step<-seq(1, nchar(x), by=2)), step+1), 16)), "double",n=1,size=4)
# or 
readBin(as.raw(strtoi(apply(matrix(strsplit(x,"")[[1]],2),2,paste, collapse=""), 16)), "double", size=4)

x你能进一步解释你的十六进制数字如何等于
80.39
?实际上你提到的函数不是一个C函数,我想你可以找到一个方法来读取二进制数据,这可能会有帮助:@pierrelaffortune-它看起来很合适-例如--返回相同的结果,尽管结果是相反的。@TheLatermail我得到
0x42a0c7ae
。它接近OP,但足够远,需要clarity@MrFlick非常感谢你的帮助。readBin不工作,但其他两个代码工作正常,我真的很感激。最近是否更新了
readBin
?这在R3.2.4上不起作用,输入需要是二进制的错误。更详细的版本应该是
x
readBin(as.raw(strtoi)(strsplit(x),(?@thelatemail Nice。我应该想到一个正则表达式。