私はTCP経由でいくつかの値を通信するのにIEEE754形式を使用しています。この例では、intをbyte []に変換してから、BitConverterを使用してfloat(IEEE754 Single形式、32ビット)に変換しています。float(IEEE754)からbyte []への変換
この浮動小数点数をバイト[4]に格納する必要がありますが、元の値(指定された形式ではエンコードされません)に戻る必要はありません。 BitConverter.GetBytes()はそれを自動的に行います。そのため、私はそれを使用できません。
int volumeInt = (int)(volumeTest);
byte[] volumeTank = new byte[4];
volumeTank[0] = (byte)(volumeInt >> 24);
volumeTank[1] = (byte)(volumeInt >> 16);
volumeTank[2] = (byte)(volumeInt >> 8);
volumeTank[3] = (byte)(volumeInt >> 0);
float volumeFloat = BitConverter.ToSingle(volumeTank, 0);
EDIT
コンテキスト: 私はこれをやっている理由はASCIIとして[]バイトをエンコードし、TCPを介して送信される文字列に含めることです。 IEEE-754形式でなければならず、ASCII形式でエンコードする必要があります。私が探していた答えは、浮動小数点をバイト[]に変換する方法だけでした。
例:-8.380858E-27:それはfloatとしてIEEE754形式に変換することができます9876:int型を考えると
。今、私はこの値をフォーマットを失うことなく元の値(9876)に戻すことなく、バイト配列に格納します。
「元の値に戻さない」とはどういう意味ですか?エンコードされたとはどういう意味ですか?あなたはエンディアンを意味しますか?または、これは 'int - > byte [] - > float - > byte []'でも動作するはずですが、 'float - > byte [] - > int'は動作しませんか?私はあなたのシナリオや達成しようとしていること、あるいはその理由を実際に得ていませんか? – Bauss
「オリジナル値」とは、「IEEE754形式ではない」という意味です。私は同じことを "コード化されていない"と言っていましたが、この場合に使用するのが最良の単語ではないことがわかります。 – amorimph
入力、出力、希望出力を表示すると、助けがはるかに簡単になります。 – Sinatr