3

123.456浮動小数点数(例:)をbinary32に変換する方法があるかどうかを調べるために、私はずっと探してきました。binary32 から float に移行する多くのソリューションを見つけましたが、その逆はありません。

4

3 に答える 3

6

上記は素晴らしいですが、いくつか単純化しています。

[123.456].pack('g').bytes.map{|n| "%08b" % n}.join

'g'の代わりにフラグを使用すると、 から出力する必要が'e'なくなります。このメソッドは、各文字の呼び出しと同じことを行います。次に、4 つの整数を取得して合計/ビット シフトを行う代わりに、それぞれを 8 文字のバイナリ文字列にマップし、それらを結合します。reversepackbytes.ord

于 2013-07-25T22:27:03.940 に答える
3

String#unpackArray#packを使用する必要があります。

[123.456].pack('g').unpack('B*').first
#=> "01000010111101101110100101111001"
于 2017-01-08T22:03:36.537 に答える