Module: CLValueBytesParsers::CLI64BytesParser

Extended by:
CLI64BytesParser
Included in:
CLI64BytesParser, CLi64
Defined in:
lib/serialization/cl_value_bytes_parsers.rb

Constant Summary collapse

@@check =
0

Instance Method Summary collapse

Instance Method Details

#from_bytes(byte_array) ⇒ Object



91
92
93
94
95
96
97
98
99
100
# File 'lib/serialization/cl_value_bytes_parsers.rb', line 91

def from_bytes(byte_array)
  if @@check < 0
    @@check = 0
    bytes = byte_array.map { |b| b.chr }.join
    bytes.unpack("B*").first.scan(/[01]{8}/)
    bytes.reverse.unpack("q*").first
  else
    byte_array.reverse.inject(0) {|m, b| (m << 8) + b }
  end
end

#to_bytes(value) ⇒ Object



102
103
104
105
106
107
108
109
110
111
# File 'lib/serialization/cl_value_bytes_parsers.rb', line 102

def to_bytes(value)
  if value < 0 && value >= MIN_I64
    @@check = value
    [value].pack("q>*").unpack("C*")
  elsif value >= 0 && value <= MAX_I64
    [value].pack("q<*").unpack("C*")
  else
    "Parameter value '#{value}' is out of range."
  end
end