Class: PacketGen::Types::Int24

Inherits:
Int
  • Object
show all
Defined in:
lib/packetgen/types/int.rb

Overview

3-byte unsigned integer

Author:

  • Sylvain Daubert

Since:

  • 2.1.4

Direct Known Subclasses

Int24be, Int24le

Instance Attribute Summary

Attributes inherited from Int

#default, #endian, #value, #width

Instance Method Summary collapse

Methods inherited from Int

#sz, #to_f, #to_i

Constructor Details

#initialize(value = nil, endian = :big) ⇒ Int24

Returns a new instance of Int24.

Parameters:

  • value (Integer, nil) (defaults to: nil)
  • endian (:big, :little) (defaults to: :big)

Since:

  • 2.1.4



175
176
177
# File 'lib/packetgen/types/int.rb', line 175

def initialize(value=nil, endian=:big)
  super(value, endian, 3)
end

Instance Method Details

#read(value) ⇒ self

Read an 3-byte Int from a binary string or an integer

Parameters:

Returns:

  • (self)

Since:

  • 2.1.4



182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/packetgen/types/int.rb', line 182

def read(value)
  return self if value.nil?

  @value = if value.is_a?(Integer)
             value.to_i
           else
             up8 = down16 = 0
             if @endian == :big
               up8, down16 = value.to_s.unpack('Cn')
             else
               down16, up8 = value.to_s.unpack('vC')
             end
             (up8 << 16) | down16
           end
  self
end

#to_s::String

Returns:

  • (::String)

Since:

  • 2.1.4



200
201
202
203
204
205
206
207
208
# File 'lib/packetgen/types/int.rb', line 200

def to_s
  up8 = to_i >> 16
  down16 = to_i & 0xffff
  if @endian == :big
    [up8, down16].pack('Cn')
  else
    [down16, up8].pack('vC')
  end
end