Method: Flt::FormatBase.unpack_fields_hash

Defined in:
lib/float-formats/classes.rb

.unpack_fields_hash(v) ⇒ Object

Converts en ancoded floating point number to hash containing the internal fields that define the number. Accepts either a Value or a byte String.



893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
# File 'lib/float-formats/classes.rb', line 893

def self.unpack_fields_hash(v)
  a = unpack_fields(v)
  h = {}
  if @splitted_fields.nil?
    (0...a.size).each do |i|
      h[@field_meaning[i]] = a[i]
    end
  else

    @fields.each_key do |f|
      splits = @splitted_fields[f]
      if splits
        v = 0
        k = 1
        splits.each do |i|
          v += k*a[i]
          k *= fields_radix**(@field_lengths[i])
        end
        h[f] = v
      else
        h[f] = a[@field_meaning.index(f)]
      end
    end
  end
  h
end