Как конвертировать бинарные32 в плавающие в ruby - PullRequest
3 голосов
/ 14 марта 2012

У меня есть двоичный код32, закодированный в IEEE 32.

Как конвертировать 0x0040EDC2 в -118,625?

Я попробовал несколько вариантов упаковки и распаковал безуспешно.

IEEE: http://en.wikipedia.org/wiki/Single-precision_floating-point_format

Маню

1 Ответ

4 голосов
/ 14 марта 2012
$ irb
irb(main):001:0> bin = "\x00\x40\xED\xC2"
=> "\000@\355\302"
irb(main):002:0> bin.unpack 'f'
=> [-118.625]
irb(main):003:0> bin.unpack 'e'
=> [-118.625]
irb(main):004:0> bin.unpack 'F'
=> [-118.625]
irb(main):005:0> i = 0x0040edc2
=> 4255170
irb(main):006:0> bin = [i].pack('L')
=> "\xC2\xED@\x00"
irb(main):007:0> bin.unpack 'g'
=> [-118.625]
irb(main):008:0> RUBY_PLATFORM
=> "x86_64-linux"
irb(main):009:0> RUBY_VERSION
=> "1.9.2"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...