将十六进制格式转换为R中的浮点数
你能不能有人帮我把4字节的十六进制格式转换成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
“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上不起作用,输入需要是二进制的错误。更详细的版本应该是xreadBin(as.raw(strtoi)(strsplit(x),(?@thelatemail Nice。我应该想到一个正则表达式。