Module: CLValueBytesParsers::CLI32BytesParser

Extended by:
CLI32BytesParser
Included in:
CLI32BytesParser, CLi32
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



64
65
66
67
68
69
70
71
72
73
# File 'lib/serialization/cl_value_bytes_parsers.rb', line 64

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.unpack("l*").first
  else
    byte_array.reverse.inject(0) {|m, b| (m << 8) + b }
  end
end

#to_bytes(clvalue) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
# File 'lib/serialization/cl_value_bytes_parsers.rb', line 75

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