[#49838] rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は? — junichirou tahara <taharajunichirou@...>

jxtaharaと申します.

14 messages 2014/06/23
[#49840] Re: rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は? — EGUCHI Osamu <eguchi@...> 2014/06/23

えぐち@エスアンドイーです。

[#49842] Re: rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は? — Nobuyoshi Nakada <nobu@...> 2014/06/23

(2014/06/23 9:29), EGUCHI Osamu wrote:

[ruby-list:49841] Re: rubyでfloat(32bit浮動小数点)の数値をHEX表示する手法は?

From: EGUCHI Osamu <eguchi@...>
Date: 2014-06-23 00:34:26 UTC
List: ruby-list #49841
まともとさんとダブった上に間違えました。

ruby -ve 'p [3.14].pack("f").unpack("H*")'
ruby 2.0.0p353 (2013-11-22 revision 43784) [amd64-freebsd9]
["c3f54840"]

ですね。


2014年6月23日 9:29 EGUCHI Osamu <eguchi@sandeinc.com>:
> えぐち@エスアンドイーです。
>
> 2014年6月23日 9:18 junichirou tahara <taharajunichirou@gmail.com>:
>> jxtaharaと申します.
>> 現在,float数をHEXで表記でできないので悩んでいます.
>>
>> C言語だと
>> float num = 3.14
>> unsigned char *p=(unsigned char *)&num;
>> sprintf(ps,"0x%02X%02X%02X%02X",p[3],p[2],p[1],p[0]);
>>
>> 結果
>> C3 F5 48 40
>>
>> みたいにすればHEXで取れると思いますがRubyではどうすればいいのでしょうか?
>>
>> ss=sprintf("%A",num)
>> p ss
>> だと,
>> "0X1.91EB851EB851FP+1"
>> となります.
>
> こんな感じでどうでしょうか?
>
> % ruby -ve 'p [3.14].pack("f").unpack("h*")'
> ruby 2.0.0p353 (2013-11-22 revision 43784) [amd64-freebsd9]
> ["3c5f8404"]
>
>  えぐち

In This Thread