メインコンテンツに移動

数値変換

バイトHEX文字列を数値に変換する

sigfoxにデータを送信する際に、floatデータならそのまま4byteデータとして送信するが、これの復元で調べまくった。

25.9964371は、41cff8b4 と表現される。これは、c言語で共用体を使えばそれほど難しくない。

union {
  unsigned long longDeg;
  float floatDeg;
} temp32;

floatデータとして変数に格納すればlong整数で取り出せ、その逆も然り。このデータをmatlabで復元したいが、matlabは標準でdoubleになっていて、単精度浮動小数だとうまくいかない

hex2num('41cff8b4') は、1.072785408000000e+09 と算出されてしまう。41cff8b4を倍精度に変えてしまえば良い。ここに変換サイトがある。

https://gregstoll.dyndns.org/~gregstoll/floattohex/