Class: Erlang::ETF::SmallBig
- Inherits:
-
Object
- Object
- Erlang::ETF::SmallBig
- Includes:
- Term
- Defined in:
- lib/erlang/etf/small_big.rb
Overview
1 | 1 | 1 | n |
---|---|---|---|
110 | n | Sign | d(0) ... d(n-1) |
Bignums are stored in unary form with a Sign
byte that is 0 if
the binum is positive and 1 if is negative. The digits are
stored with the LSB byte stored first.
To calculate the integer the following formula can be used:
B = 256
(d0*B^0 + d1*B^1 + d2*B^2 + ... d(N-1)*B^(n-1))
(see SMALL_BIG_EXT
)
Constant Summary
Constants included from Term
Term::BERT_PREFIX, Term::BIN_LSB_PACK, Term::BIN_MSB_PACK
Instance Method Summary collapse
- #__ruby_evolve__ ⇒ Object
- #after_serialize_n(buffer) ⇒ Object
-
#initialize(integer) ⇒ SmallBig
constructor
A new instance of SmallBig.
- #serialize_integer(buffer) ⇒ Object
Methods included from Term
#==, #__erlang_evolve__, #__erlang_type__, included
Constructor Details
#initialize(integer) ⇒ SmallBig
Returns a new instance of SmallBig.
58 59 60 |
# File 'lib/erlang/etf/small_big.rb', line 58 def initialize(integer) @integer = integer end |
Instance Method Details
#__ruby_evolve__ ⇒ Object
62 63 64 |
# File 'lib/erlang/etf/small_big.rb', line 62 def __ruby_evolve__ integer end |
#after_serialize_n(buffer) ⇒ Object
45 46 47 |
# File 'lib/erlang/etf/small_big.rb', line 45 def after_serialize_n(buffer) buffer[@n_start, BYTES_8] = serialize_n "" end |
#serialize_integer(buffer) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/erlang/etf/small_big.rb', line 36 def serialize_integer(buffer) start = buffer.bytesize buffer << [integer.abs.to_s(2).reverse!].pack(BIN_LSB_PACK) self.n = buffer.bytesize - start buffer end |