Class: PacketGen::Types::Int24
Overview
3-byte unsigned integer
Instance Attribute Summary
Attributes inherited from Int
#default, #endian, #value, #width
Instance Method Summary collapse
-
#initialize(value = nil, endian = :big) ⇒ Int24
constructor
A new instance of Int24.
-
#read(value) ⇒ self
Read an 3-byte Int from a binary string or an integer.
- #to_s ⇒ ::String
Methods inherited from Int
#format_inspect, #nbits, #sz, #to_f, #to_i
Methods included from Fieldable
#format_inspect, #sz, #to_human, #type_name
Constructor Details
#initialize(value = nil, endian = :big) ⇒ Int24
Returns a new instance of Int24.
194 195 196 |
# File 'lib/packetgen/types/int.rb', line 194 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
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 |
# File 'lib/packetgen/types/int.rb', line 201 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
219 220 221 222 223 224 225 226 227 |
# File 'lib/packetgen/types/int.rb', line 219 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 |