C#でfloatをbit単位でアクセスする?
通信する時にfloatを一旦1byte単位で読みたかったのですが、簡単にはできないみたい。
以下のようなメソッドを作って対応しました。
private UInt32 FloatToByte(float f) { byte[] buf = new byte[4]; UInt32 returnval; MemoryStream mem = new MemoryStream(buf); BinaryWriter w = new BinaryWriter(mem); w.Write(f); returnval = (UInt32)(buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24)); mem.Close(); return returnval; }
まだC#がよくわかっていないのでどうするのが王道なのか分からないけれど、これで動きました。
byte[]を引数に取ってもいいんだけれど配列の先頭をオフセットして渡す方法がわからなかったのでこんな感じで。
参照とかどうでもいいからvoid*を使わせてください。が本音。
そんな訳で、マイコンとfloat型のやりとりができました。
そろそろインターフェイスソフトが使えるレベルになりそうです。