2016-09-13 11 views
1

になります.4バイトの16進数形式をRの浮動小数点数に変換する方法を教えてください。たとえば、"aec7a042"80.39に転送したいとします。私はこの変換を私に与えるために多くの検索の後にRで何かを見つけることができませんでした! C関数はBitConverterです。 ToSingle。しかし、私はRで同じことをする必要がありますか? 誰でも助けてくれますか?16進形式を浮動小数点数に変換するとR

+0

あなたの16進数が「80.39」とどのように等しいかをさらに説明できますか? –

+0

実際にあなたが言及した関数はC関数ではありません、私はバイナリデータを読むための回避策を見つけることができると思う、これは参考になるかもしれない:http://www.ats.ucla.edu/stat/r/faq/read_binary.htm – DarioDF

+0

@PierreLafortune - それはフィットするようです - 例えば - https://gregstoll.dyndns.org/~gregstoll/floattohex/ - 同じ結果が返されますが、逆になります。 – thelatemail

答えて

2

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) 

を試してみてください。

+0

'readBin'は最近更新されましたか?これはR 3.2.4では動作しません。バイナリである必要がある入力に関するエラーがあります。 – thelatemail

+0

おそらく?私は 'R 3.2.2'でテストし、うまくいった。 – MrFlick

+1

もっと冗長なバージョンは 'x < - " aec7a042 "となります。ステップ1)、16))、 "double"、n = 1、size = "1"); readBin(as.raw(strtoi(substring(x、(ステップ<-seq(1、nchar 4) 'からコードを使用するhttp://stackoverflow.com/questions/29251934/how-to-convert-a-hex-string-to-text-in-r – MrFlick

関連する問題