42
loading...
This website collects cookies to deliver better user experience
gem install ffi-bitfield
require 'ffi/bit_struct'
# FFI::BitStruct
require 'ffi/managed_bit_struct'
# FFI::ManagedBitStruct
require 'ffi/bit_structs'
# Both FFI::BitStruct and FFI::ManagedBitStruct
require 'ffi/bit_struct'
class Struct1 < FFI::BitStruct
layout \
:a, :uint8,
:b, :uint8
bit_fields :a,
:a0, 1,
:a1, 1,
:a2, 1,
:a3, 1,
:a4, 1,
:a5, 1,
:a6, 1,
:a7, 1
bit_fields :b,
:b0, 1,
:b1, 1,
:b2, 2,
:b3, 4
end
bit_field
is an alias for bit_fileds
. You can use either of them.a = Struct1.new
p a[:a0] # 0
a[:a7] = 1
p a[:0] # 128
Integer#[]
. Did you know that?128[0] # 0
128[7] # 1
128[6..7] # 2
128[6, 2] # 2