Module: BinUtils::PureRuby

Extended by:
PureRuby
Included in:
PureRuby
Defined in:
lib/bin_utils/pure_ruby.rb

Overview

Pure Ruby implementation of bin utils. It is provided just reference implementation, so that I could write tests before writting native code. You should not expect performance from it.

Constant Summary collapse

INT32_INT32_LE =
'VV'.freeze
INT32_INT32_BE =
'NN'.freeze
MIN_INT =
0
MAX_INT64 =
2**64 - 1
MAX_INT32 =
2**32 - 1
MAX_INT16 =
2**16 - 1
MAX_INT8 =
2**8 - 1
MAX_SINT64 =
2**63 - 1
MAX_SINT32 =
2**31 - 1
MAX_SINT16 =
2**15 - 1
MAX_SINT8 =
2**7 - 1
MIN_SINT64 =
-(2**63)
MIN_SINT32 =
-(2**31)
MIN_SINT16 =
-(2**15)
MIN_SINT8 =
-(2**7)
EMPTY =
''.freeze
ONE =
"\x01".freeze
INT32_INT16_LE =
'Vv'.freeze
INT16_INT32_BE =
'nN'.freeze
INT32_INT16_INT8_LE =
'VvC'.freeze
INT8_INT16_INT32_BE =
'CnN'.freeze
BER_5 =
128 ** 5
BER_6 =
128 ** 6
BER_7 =
128 ** 7
BER_8 =
128 ** 8
BER_9 =
128 ** 9
BINARY =
::Encoding::BINARY
BER_STRING =
"wa*".freeze
INT32LE_STRING =
"Va*".freeze
INT32BE_STRING =
"Na*".freeze
BER =
'w*'
INT32LE_BER =
'Vw'
INT32BE_BER =
'Nw'

Instance Method Summary collapse

Instance Method Details

#append_ber!(data, *ints) ⇒ Object



728
729
730
731
732
733
734
735
736
# File 'lib/bin_utils/pure_ruby.rb', line 728

def append_ber!(data, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  if ints.size == 1 && ints[0] < 128
    data << ints[0]
  else
    data << ints.pack(BER)
  end
end

#append_ber_int16_be!(data, int1, *ints) ⇒ Object



1014
1015
1016
1017
1018
1019
# File 'lib/bin_utils/pure_ruby.rb', line 1014

def append_ber_int16_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(data, int1)
  append_int16_be!(data, *ints)
end

#append_ber_int16_le!(data, int1, *ints) ⇒ Object



986
987
988
989
990
991
# File 'lib/bin_utils/pure_ruby.rb', line 986

def append_ber_int16_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(data, int1)
  append_int16_le!(data, *ints)
end

#append_ber_int24_be!(data, int1, *ints) ⇒ Object



1021
1022
1023
1024
1025
1026
# File 'lib/bin_utils/pure_ruby.rb', line 1021

def append_ber_int24_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(data, int1)
  append_int24_be!(data, *ints)
end

#append_ber_int24_le!(data, int1, *ints) ⇒ Object



993
994
995
996
997
998
# File 'lib/bin_utils/pure_ruby.rb', line 993

def append_ber_int24_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(data, int1)
  append_int24_le!(data, *ints)
end

#append_ber_int32_be!(data, int1, *ints) ⇒ Object



1028
1029
1030
1031
1032
1033
# File 'lib/bin_utils/pure_ruby.rb', line 1028

def append_ber_int32_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(data, int1)
  append_int32_be!(data, *ints)
end

#append_ber_int32_le!(data, int1, *ints) ⇒ Object



1000
1001
1002
1003
1004
1005
# File 'lib/bin_utils/pure_ruby.rb', line 1000

def append_ber_int32_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(data, int1)
  append_int32_le!(data, *ints)
end

#append_ber_int8!(data, int1, *ints) ⇒ Object



979
980
981
982
983
984
# File 'lib/bin_utils/pure_ruby.rb', line 979

def append_ber_int8!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(data, int1)
  append_int8!(data, *ints)
end

#append_bersize_ber!(data, *ints) ⇒ Object



738
739
740
741
742
743
744
# File 'lib/bin_utils/pure_ruby.rb', line 738

def append_bersize_ber!(data, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  bers = ints.pack(BER)
  append_ber!(data, bers.size)
  data << bers
end

#append_bersize_int16_be!(str, *ints) ⇒ Object



541
542
543
544
545
546
# File 'lib/bin_utils/pure_ruby.rb', line 541

def append_bersize_int16_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 2)
  append_int16_be!(str, *ints)
end

#append_bersize_int16_le!(str, *ints) ⇒ Object



492
493
494
495
496
497
# File 'lib/bin_utils/pure_ruby.rb', line 492

def append_bersize_int16_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 2)
  append_int16_le!(str, *ints)
end

#append_bersize_int24_be!(str, *ints) ⇒ Object



548
549
550
551
552
553
# File 'lib/bin_utils/pure_ruby.rb', line 548

def append_bersize_int24_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 3)
  append_int24_be!(str, *ints)
end

#append_bersize_int24_le!(str, *ints) ⇒ Object



499
500
501
502
503
504
# File 'lib/bin_utils/pure_ruby.rb', line 499

def append_bersize_int24_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 3)
  append_int24_le!(str, *ints)
end

#append_bersize_int32_be!(str, *ints) ⇒ Object



555
556
557
558
559
560
# File 'lib/bin_utils/pure_ruby.rb', line 555

def append_bersize_int32_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 4)
  append_int32_be!(str, *ints)
end

#append_bersize_int32_le!(str, *ints) ⇒ Object



506
507
508
509
510
511
# File 'lib/bin_utils/pure_ruby.rb', line 506

def append_bersize_int32_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 4)
  append_int32_le!(str, *ints)
end

#append_bersize_int40_be!(str, *ints) ⇒ Object



562
563
564
565
566
567
# File 'lib/bin_utils/pure_ruby.rb', line 562

def append_bersize_int40_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 5)
  append_int40_be!(str, *ints)
end

#append_bersize_int40_le!(str, *ints) ⇒ Object



513
514
515
516
517
518
# File 'lib/bin_utils/pure_ruby.rb', line 513

def append_bersize_int40_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 5)
  append_int40_le!(str, *ints)
end

#append_bersize_int48_be!(str, *ints) ⇒ Object



569
570
571
572
573
574
# File 'lib/bin_utils/pure_ruby.rb', line 569

def append_bersize_int48_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 6)
  append_int48_be!(str, *ints)
end

#append_bersize_int48_le!(str, *ints) ⇒ Object



520
521
522
523
524
525
# File 'lib/bin_utils/pure_ruby.rb', line 520

def append_bersize_int48_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 6)
  append_int48_le!(str, *ints)
end

#append_bersize_int56_be!(str, *ints) ⇒ Object



576
577
578
579
580
581
# File 'lib/bin_utils/pure_ruby.rb', line 576

def append_bersize_int56_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 7)
  append_int56_be!(str, *ints)
end

#append_bersize_int56_le!(str, *ints) ⇒ Object



527
528
529
530
531
532
# File 'lib/bin_utils/pure_ruby.rb', line 527

def append_bersize_int56_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 7)
  append_int56_le!(str, *ints)
end

#append_bersize_int64_be!(str, *ints) ⇒ Object



583
584
585
586
587
588
# File 'lib/bin_utils/pure_ruby.rb', line 583

def append_bersize_int64_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 8)
  append_int64_be!(str, *ints)
end

#append_bersize_int64_le!(str, *ints) ⇒ Object



534
535
536
537
538
539
# File 'lib/bin_utils/pure_ruby.rb', line 534

def append_bersize_int64_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size * 8)
  append_int64_le!(str, *ints)
end

#append_bersize_int8!(str, *ints) ⇒ Object



485
486
487
488
489
490
# File 'lib/bin_utils/pure_ruby.rb', line 485

def append_bersize_int8!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_ber!(str, ints.size)
  append_int8!(str, *ints)
end

#append_bersize_string!(data, str) ⇒ Object



710
711
712
713
# File 'lib/bin_utils/pure_ruby.rb', line 710

def append_bersize_string!(data, str)
  data ||= ''.force_encoding(BINARY)
  data << [str.bytesize, str].pack(BER_STRING)
end

#append_int16_be!(str, *ints) ⇒ Object



391
392
393
394
395
396
397
398
399
400
401
402
# File 'lib/bin_utils/pure_ruby.rb', line 391

def append_int16_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << ((int>>8) & 255) << (int & 255)
    i += 1
  end
  str
end

#append_int16_ber_be!(data, int1, *ints) ⇒ Object



895
896
897
898
899
900
# File 'lib/bin_utils/pure_ruby.rb', line 895

def append_int16_ber_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int16_be!(data, int1)
  append_ber!(data, *ints)
end

#append_int16_ber_le!(data, int1, *ints) ⇒ Object



792
793
794
795
796
797
# File 'lib/bin_utils/pure_ruby.rb', line 792

def append_int16_ber_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int16_le!(data, int1)
  append_ber!(data, *ints)
end

#append_int16_int24_be!(data, int1, *ints) ⇒ Object



909
910
911
912
913
914
# File 'lib/bin_utils/pure_ruby.rb', line 909

def append_int16_int24_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int16_be!(data, int1)
  append_int24_be!(data, *ints)
end

#append_int16_int24_le!(data, int1, *ints) ⇒ Object



806
807
808
809
810
811
# File 'lib/bin_utils/pure_ruby.rb', line 806

def append_int16_int24_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int16_le!(data, int1)
  append_int24_le!(data, *ints)
end

#append_int16_int32_be!(data, int1, *ints) ⇒ Object



916
917
918
919
920
921
# File 'lib/bin_utils/pure_ruby.rb', line 916

def append_int16_int32_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int16_be!(data, int1)
  append_int32_be!(data, *ints)
end

#append_int16_int32_le!(data, int1, *ints) ⇒ Object



813
814
815
816
817
818
# File 'lib/bin_utils/pure_ruby.rb', line 813

def append_int16_int32_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int16_le!(data, int1)
  append_int32_le!(data, *ints)
end

#append_int16_int8_be!(data, int1, *ints) ⇒ Object



902
903
904
905
906
907
# File 'lib/bin_utils/pure_ruby.rb', line 902

def append_int16_int8_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int16_be!(data, int1)
  append_int8!(data, *ints)
end

#append_int16_int8_le!(data, int1, *ints) ⇒ Object



799
800
801
802
803
804
# File 'lib/bin_utils/pure_ruby.rb', line 799

def append_int16_int8_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int16_le!(data, int1)
  append_int8!(data, *ints)
end

#append_int16_le!(str, *ints) ⇒ Object



296
297
298
299
300
301
302
303
304
305
306
307
# File 'lib/bin_utils/pure_ruby.rb', line 296

def append_int16_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << (int & 255) << ((int>>8) & 255)
    i += 1
  end
  str
end

#append_int24_be!(str, *ints) ⇒ Object



404
405
406
407
408
409
410
411
412
413
414
415
# File 'lib/bin_utils/pure_ruby.rb', line 404

def append_int24_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << ((int>>16) & 255) << ((int>>8) & 255) << (int & 255)
    i += 1
  end
  str
end

#append_int24_ber_be!(data, int1, *ints) ⇒ Object



923
924
925
926
927
928
# File 'lib/bin_utils/pure_ruby.rb', line 923

def append_int24_ber_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int24_be!(data, int1)
  append_ber!(data, *ints)
end

#append_int24_ber_le!(data, int1, *ints) ⇒ Object



820
821
822
823
# File 'lib/bin_utils/pure_ruby.rb', line 820

def append_int24_ber_le!(data, int1, *ints)
  append_int24_le!(data, int1)
  append_ber!(data, *ints)
end

#append_int24_int16_be!(data, int1, *ints) ⇒ Object



937
938
939
940
941
942
# File 'lib/bin_utils/pure_ruby.rb', line 937

def append_int24_int16_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int24_be!(data, int1)
  append_int16_be!(data, *ints)
end

#append_int24_int16_le!(data, int1, *ints) ⇒ Object



832
833
834
835
836
837
# File 'lib/bin_utils/pure_ruby.rb', line 832

def append_int24_int16_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int24_le!(data, int1)
  append_int16_le!(data, *ints)
end

#append_int24_int32_be!(data, int1, *ints) ⇒ Object



944
945
946
947
948
949
# File 'lib/bin_utils/pure_ruby.rb', line 944

def append_int24_int32_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int24_be!(data, int1)
  append_int32_be!(data, *ints)
end

#append_int24_int32_le!(data, int1, *ints) ⇒ Object



839
840
841
842
843
844
# File 'lib/bin_utils/pure_ruby.rb', line 839

def append_int24_int32_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int24_le!(data, int1)
  append_int32_le!(data, *ints)
end

#append_int24_int8_be!(data, int1, *ints) ⇒ Object



930
931
932
933
934
935
# File 'lib/bin_utils/pure_ruby.rb', line 930

def append_int24_int8_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int24_be!(data, int1)
  append_int8!(data, *ints)
end

#append_int24_int8_le!(data, int1, *ints) ⇒ Object



825
826
827
828
829
830
# File 'lib/bin_utils/pure_ruby.rb', line 825

def append_int24_int8_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int24_le!(data, int1)
  append_int8!(data, *ints)
end

#append_int24_le!(str, *ints) ⇒ Object



309
310
311
312
313
314
315
316
317
318
319
320
321
# File 'lib/bin_utils/pure_ruby.rb', line 309

def append_int24_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << (int & 255) << ((int>>8) & 255) <<
           ((int>>16) & 255)
    i += 1
  end
  str
end

#append_int32_be!(str, *ints) ⇒ Object



417
418
419
420
421
422
423
424
425
426
427
428
429
# File 'lib/bin_utils/pure_ruby.rb', line 417

def append_int32_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << ((int>>24) & 255) << ((int>>16) & 255) <<
           ((int>>8) & 255) << (int & 255)
    i += 1
  end
  str
end

#append_int32_ber_be!(data, int1, *ints) ⇒ Object



951
952
953
954
955
956
# File 'lib/bin_utils/pure_ruby.rb', line 951

def append_int32_ber_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(data, int1)
  append_ber!(data, *ints)
end

#append_int32_ber_le!(data, int1, *ints) ⇒ Object



846
847
848
849
850
851
# File 'lib/bin_utils/pure_ruby.rb', line 846

def append_int32_ber_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(data, int1)
  append_ber!(data, *ints)
end

#append_int32_int16_be!(data, int1, *ints) ⇒ Object



965
966
967
968
969
970
# File 'lib/bin_utils/pure_ruby.rb', line 965

def append_int32_int16_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(data, int1)
  append_int16_be!(data, *ints)
end

#append_int32_int16_le!(data, int1, *ints) ⇒ Object



860
861
862
863
864
865
# File 'lib/bin_utils/pure_ruby.rb', line 860

def append_int32_int16_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(data, int1)
  append_int16_le!(data, *ints)
end

#append_int32_int24_be!(data, int1, *ints) ⇒ Object



972
973
974
975
976
977
# File 'lib/bin_utils/pure_ruby.rb', line 972

def append_int32_int24_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(data, int1)
  append_int24_be!(data, *ints)
end

#append_int32_int24_le!(data, int1, *ints) ⇒ Object



867
868
869
870
871
872
# File 'lib/bin_utils/pure_ruby.rb', line 867

def append_int32_int24_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(data, int1)
  append_int24_le!(data, *ints)
end

#append_int32_int8_be!(data, int1, *ints) ⇒ Object



958
959
960
961
962
963
# File 'lib/bin_utils/pure_ruby.rb', line 958

def append_int32_int8_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(data, int1)
  append_int8!(data, *ints)
end

#append_int32_int8_le!(data, int1, *ints) ⇒ Object



853
854
855
856
857
858
# File 'lib/bin_utils/pure_ruby.rb', line 853

def append_int32_int8_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(data, int1)
  append_int8!(data, *ints)
end

#append_int32_le!(str, *ints) ⇒ Object



323
324
325
326
327
328
329
330
331
332
333
334
335
# File 'lib/bin_utils/pure_ruby.rb', line 323

def append_int32_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << (int & 255) << ((int>>8) & 255) <<
           ((int>>16) & 255) << ((int>>24) & 255)
    i += 1
  end
  str
end

#append_int32size_ber_be!(data, *ints) ⇒ Object



754
755
756
757
758
759
760
# File 'lib/bin_utils/pure_ruby.rb', line 754

def append_int32size_ber_be!(data, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  bers = ints.pack(BER)
  append_int32_be!(data, bers.size)
  data << bers
end

#append_int32size_ber_le!(data, *ints) ⇒ Object



746
747
748
749
750
751
752
# File 'lib/bin_utils/pure_ruby.rb', line 746

def append_int32size_ber_le!(data, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  bers = ints.pack(BER)
  append_int32_le!(data, bers.size)
  data << bers
end

#append_int32size_int16_be!(str, *ints) ⇒ Object



653
654
655
656
657
658
# File 'lib/bin_utils/pure_ruby.rb', line 653

def append_int32size_int16_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(str, ints.size * 2)
  append_int16_be!(str, *ints)
end

#append_int32size_int16_le!(str, *ints) ⇒ Object



597
598
599
600
601
602
# File 'lib/bin_utils/pure_ruby.rb', line 597

def append_int32size_int16_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(str, ints.size * 2)
  append_int16_le!(str, *ints)
end

#append_int32size_int24_be!(str, *ints) ⇒ Object



660
661
662
663
664
665
# File 'lib/bin_utils/pure_ruby.rb', line 660

def append_int32size_int24_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(str, ints.size * 3)
  append_int24_be!(str, *ints)
end

#append_int32size_int24_le!(str, *ints) ⇒ Object



604
605
606
607
608
609
# File 'lib/bin_utils/pure_ruby.rb', line 604

def append_int32size_int24_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(str, ints.size * 3)
  append_int24_le!(str, *ints)
end

#append_int32size_int32_be!(str, *ints) ⇒ Object



667
668
669
670
671
672
# File 'lib/bin_utils/pure_ruby.rb', line 667

def append_int32size_int32_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(str, ints.size * 4)
  append_int32_be!(str, *ints)
end

#append_int32size_int32_le!(str, *ints) ⇒ Object



611
612
613
614
615
616
# File 'lib/bin_utils/pure_ruby.rb', line 611

def append_int32size_int32_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(str, ints.size * 4)
  append_int32_le!(str, *ints)
end

#append_int32size_int40_be!(str, *ints) ⇒ Object



674
675
676
677
678
679
# File 'lib/bin_utils/pure_ruby.rb', line 674

def append_int32size_int40_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(str, ints.size * 5)
  append_int40_be!(str, *ints)
end

#append_int32size_int40_le!(str, *ints) ⇒ Object



618
619
620
621
622
623
# File 'lib/bin_utils/pure_ruby.rb', line 618

def append_int32size_int40_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(str, ints.size * 5)
  append_int40_le!(str, *ints)
end

#append_int32size_int48_be!(str, *ints) ⇒ Object



681
682
683
684
685
686
# File 'lib/bin_utils/pure_ruby.rb', line 681

def append_int32size_int48_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(str, ints.size * 6)
  append_int48_be!(str, *ints)
end

#append_int32size_int48_le!(str, *ints) ⇒ Object



625
626
627
628
629
630
# File 'lib/bin_utils/pure_ruby.rb', line 625

def append_int32size_int48_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(str, ints.size * 6)
  append_int48_le!(str, *ints)
end

#append_int32size_int56_be!(str, *ints) ⇒ Object



688
689
690
691
692
693
# File 'lib/bin_utils/pure_ruby.rb', line 688

def append_int32size_int56_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(str, ints.size * 7)
  append_int56_be!(str, *ints)
end

#append_int32size_int56_le!(str, *ints) ⇒ Object



632
633
634
635
636
637
# File 'lib/bin_utils/pure_ruby.rb', line 632

def append_int32size_int56_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(str, ints.size * 7)
  append_int56_le!(str, *ints)
end

#append_int32size_int64_be!(str, *ints) ⇒ Object



695
696
697
698
699
700
# File 'lib/bin_utils/pure_ruby.rb', line 695

def append_int32size_int64_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(str, ints.size * 8)
  append_int64_be!(str, *ints)
end

#append_int32size_int64_le!(str, *ints) ⇒ Object



639
640
641
642
643
644
# File 'lib/bin_utils/pure_ruby.rb', line 639

def append_int32size_int64_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(str, ints.size * 8)
  append_int64_le!(str, *ints)
end

#append_int32size_int8_be!(str, *ints) ⇒ Object



646
647
648
649
650
651
# File 'lib/bin_utils/pure_ruby.rb', line 646

def append_int32size_int8_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_be!(str, ints.size)
  append_int8!(str, *ints)
end

#append_int32size_int8_le!(str, *ints) ⇒ Object



590
591
592
593
594
595
# File 'lib/bin_utils/pure_ruby.rb', line 590

def append_int32size_int8_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  append_int32_le!(str, ints.size)
  append_int8!(str, *ints)
end

#append_int32size_string_be!(data, str) ⇒ Object



720
721
722
723
# File 'lib/bin_utils/pure_ruby.rb', line 720

def append_int32size_string_be!(data, str)
  data ||= ''.force_encoding(BINARY)
  data << [str.bytesize, str].pack(INT32BE_STRING)
end

#append_int32size_string_le!(data, str) ⇒ Object



715
716
717
718
# File 'lib/bin_utils/pure_ruby.rb', line 715

def append_int32size_string_le!(data, str)
  data ||= ''.force_encoding(BINARY)
  data << [str.bytesize, str].pack(INT32LE_STRING)
end

#append_int40_be!(str, *ints) ⇒ Object



431
432
433
434
435
436
437
438
439
440
441
442
443
444
# File 'lib/bin_utils/pure_ruby.rb', line 431

def append_int40_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << ((int>>32) & 255) << ((int>>24) & 255) <<
           ((int>>16) & 255) << ((int>>8) & 255) <<
           (int & 255)
    i += 1
  end
  str
end

#append_int40_le!(str, *ints) ⇒ Object



337
338
339
340
341
342
343
344
345
346
347
348
349
350
# File 'lib/bin_utils/pure_ruby.rb', line 337

def append_int40_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << (int & 255) << ((int>>8) & 255) <<
           ((int>>16) & 255) << ((int>>24) & 255) <<
           ((int>>32) & 255)
    i += 1
  end
  str
end

#append_int48_be!(str, *ints) ⇒ Object



446
447
448
449
450
451
452
453
454
455
456
457
# File 'lib/bin_utils/pure_ruby.rb', line 446

def append_int48_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << [int >> 32, int & MAX_INT32].pack(INT16_INT32_BE)
    i += 1
  end
  str
end

#append_int48_le!(str, *ints) ⇒ Object



352
353
354
355
356
357
358
359
360
361
362
363
# File 'lib/bin_utils/pure_ruby.rb', line 352

def append_int48_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << [int & MAX_INT32, int >> 32].pack(INT32_INT16_LE)
    i += 1
  end
  str
end

#append_int56_be!(str, *ints) ⇒ Object



459
460
461
462
463
464
465
466
467
468
469
470
# File 'lib/bin_utils/pure_ruby.rb', line 459

def append_int56_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << [(int >> 48), (int >> 32) & MAX_INT16, int & MAX_INT32].pack(INT8_INT16_INT32_BE)
    i += 1
  end
  str
end

#append_int56_le!(str, *ints) ⇒ Object



365
366
367
368
369
370
371
372
373
374
375
376
# File 'lib/bin_utils/pure_ruby.rb', line 365

def append_int56_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << [int & MAX_INT32, (int >> 32) & MAX_INT16, (int >> 48)].pack(INT32_INT16_INT8_LE)
    i += 1
  end
  str
end

#append_int64_be!(str, *ints) ⇒ Object



472
473
474
475
476
477
478
479
480
481
482
483
# File 'lib/bin_utils/pure_ruby.rb', line 472

def append_int64_be!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << [int >> 32, int & MAX_INT32].pack(INT32_INT32_BE)
    i += 1
  end
  str
end

#append_int64_le!(str, *ints) ⇒ Object



378
379
380
381
382
383
384
385
386
387
388
389
# File 'lib/bin_utils/pure_ruby.rb', line 378

def append_int64_le!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    int = ints[i]
    str << [int & MAX_INT32, int >> 32].pack(INT32_INT32_LE)
    i += 1
  end
  str
end

#append_int8!(str, *ints) ⇒ Object



284
285
286
287
288
289
290
291
292
293
294
# File 'lib/bin_utils/pure_ruby.rb', line 284

def append_int8!(str, *ints)
  str ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  i = 0
  sz = ints.size
  while i < sz
    str << (ints[i] & 255)
    i += 1
  end
  str
end

#append_int8_ber!(data, int1, *ints) ⇒ Object

complex



764
765
766
767
768
769
# File 'lib/bin_utils/pure_ruby.rb', line 764

def append_int8_ber!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  data << (int1 & 255)
  append_ber!(data, *ints)
end

#append_int8_int16_be!(data, int1, *ints) ⇒ Object



874
875
876
877
878
879
# File 'lib/bin_utils/pure_ruby.rb', line 874

def append_int8_int16_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  data << (int1 & 255)
  append_int16_be!(data, *ints)
end

#append_int8_int16_le!(data, int1, *ints) ⇒ Object



771
772
773
774
775
776
# File 'lib/bin_utils/pure_ruby.rb', line 771

def append_int8_int16_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  data << (int1 & 255)
  append_int16_le!(data, *ints)
end

#append_int8_int24_be!(data, int1, *ints) ⇒ Object



881
882
883
884
885
886
# File 'lib/bin_utils/pure_ruby.rb', line 881

def append_int8_int24_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  data << (int1 & 255)
  append_int24_be!(data, *ints)
end

#append_int8_int24_le!(data, int1, *ints) ⇒ Object



778
779
780
781
782
783
# File 'lib/bin_utils/pure_ruby.rb', line 778

def append_int8_int24_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  data << (int1 & 255)
  append_int24_le!(data, *ints)
end

#append_int8_int32_be!(data, int1, *ints) ⇒ Object



888
889
890
891
892
893
# File 'lib/bin_utils/pure_ruby.rb', line 888

def append_int8_int32_be!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  data << (int1 & 255)
  append_int32_be!(data, *ints)
end

#append_int8_int32_le!(data, int1, *ints) ⇒ Object



785
786
787
788
789
790
# File 'lib/bin_utils/pure_ruby.rb', line 785

def append_int8_int32_le!(data, int1, *ints)
  data ||= ''.force_encoding(BINARY)
  ints = ints[0] if ints.size == 1 && Array === ints[0]
  data << (int1 & 255)
  append_int32_le!(data, *ints)
end

#append_string!(data, str) ⇒ Object



702
703
704
705
# File 'lib/bin_utils/pure_ruby.rb', line 702

def append_string!(data, str)
  data ||= ''.force_encoding(BINARY)
  data << str.dup.force_encoding(BINARY)
end

#ber_size(int) ⇒ Object



240
241
242
243
244
245
246
247
248
249
250
251
# File 'lib/bin_utils/pure_ruby.rb', line 240

def ber_size(int)
  int < 128 ? 1 :
  int < 16384 ? 2 :
  int < 2097153 ? 3 :
  int < 268435456 ? 4 :
  int < BER_5 ? 5 :
  int < BER_6 ? 6 :
  int < BER_7 ? 7 :
  int < BER_8 ? 8 :
  int < BER_9 ? 9 :
  10
end

#get_ber(data, i = 0) ⇒ Object



253
254
255
256
257
258
259
260
261
262
263
264
265
# File 'lib/bin_utils/pure_ruby.rb', line 253

def get_ber(data, i=0)
  res = 0
  while true
    if (byte = data.getbyte(i)) <= 127
      res += byte
      break
    else
      res = (res + (byte - 128)) * 128
      i += 1
    end
  end
  res
end

#get_int16_be(data, i = 0) ⇒ Object



51
52
53
# File 'lib/bin_utils/pure_ruby.rb', line 51

def get_int16_be(data, i=0)
  data.getbyte(i+1) + data.getbyte(i) * 256
end

#get_int16_le(data, i = 0) ⇒ Object



41
42
43
# File 'lib/bin_utils/pure_ruby.rb', line 41

def get_int16_le(data, i=0)
  data.getbyte(i) + data.getbyte(i+1) * 256
end

#get_int24_be(data, i = 0) ⇒ Object



71
72
73
# File 'lib/bin_utils/pure_ruby.rb', line 71

def get_int24_be(data, i=0)
  data.getbyte(i+2) + data.getbyte(i+1) * 256 + data.getbyte(i) * 65536
end

#get_int24_le(data, i = 0) ⇒ Object



61
62
63
# File 'lib/bin_utils/pure_ruby.rb', line 61

def get_int24_le(data, i=0)
  data.getbyte(i) + data.getbyte(i+1) * 256 + data.getbyte(i+2) * 65536
end

#get_int32_be(data, i = 0) ⇒ Object



93
94
95
96
# File 'lib/bin_utils/pure_ruby.rb', line 93

def get_int32_be(data, i=0)
  (data.getbyte(i+3) + data.getbyte(i+2) * 256 +
   data.getbyte(i+1) * 65536 + data.getbyte(i) * 16777216)
end

#get_int32_le(data, i = 0) ⇒ Object



81
82
83
84
# File 'lib/bin_utils/pure_ruby.rb', line 81

def get_int32_le(data, i=0)
  (data.getbyte(i) + data.getbyte(i+1) * 256 +
   data.getbyte(i+2) * 65536 + data.getbyte(i+3) * 16777216)
end

#get_int40_be(data, i = 0) ⇒ Object



119
120
121
122
123
# File 'lib/bin_utils/pure_ruby.rb', line 119

def get_int40_be(data, i=0)
  (data.getbyte(i+4) + data.getbyte(i+3) * 256 +
   data.getbyte(i+2) * 65536 + data.getbyte(i+1) * 16777216 +
   (data.getbyte(i) << 32))
end

#get_int40_le(data, i = 0) ⇒ Object



105
106
107
108
109
# File 'lib/bin_utils/pure_ruby.rb', line 105

def get_int40_le(data, i=0)
  (data.getbyte(i) + data.getbyte(i+1) * 256 +
   data.getbyte(i+2) * 65536 + data.getbyte(i+3) * 16777216 +
   (data.getbyte(i+4) << 32))
end

#get_int48_be(data, i = 0) ⇒ Object



153
154
155
156
157
# File 'lib/bin_utils/pure_ruby.rb', line 153

def get_int48_be(data, i=0)
  data = data.byteslice(i, 6)  if i > 0
  int1, int0 = data.unpack(INT16_INT32_BE)
  int0 + (int1 << 32)
end

#get_int48_le(data, i = 0) ⇒ Object



140
141
142
143
144
# File 'lib/bin_utils/pure_ruby.rb', line 140

def get_int48_le(data, i=0)
  data = data.byteslice(i, 6)  if i > 0
  int0, int1 = data.unpack(INT32_INT16_LE)
  int0 + (int1 << 32)
end

#get_int56_be(data, i = 0) ⇒ Object



179
180
181
182
183
# File 'lib/bin_utils/pure_ruby.rb', line 179

def get_int56_be(data, i=0)
  data = data.byteslice(i, 7)  if i > 0
  int2, int1, int0 = data.unpack(INT8_INT16_INT32_BE)
  int0 + (int1 << 32) + (int2 << 48)
end

#get_int56_le(data, i = 0) ⇒ Object



166
167
168
169
170
# File 'lib/bin_utils/pure_ruby.rb', line 166

def get_int56_le(data, i=0)
  data = data.byteslice(i, 7)  if i > 0
  int0, int1, int2 = data.unpack(INT32_INT16_INT8_LE)
  int0 + (int1 << 32) + (int2 << 48)
end

#get_int64_be(data, i = 0) ⇒ Object



203
204
205
206
207
# File 'lib/bin_utils/pure_ruby.rb', line 203

def get_int64_be(data, i=0)
  data = data.byteslice(i, 8)  if i > 0
  int1, int0 = data.unpack(INT32_INT32_BE)
  int0 + (int1 << 32)
end

#get_int64_le(data, i = 0) ⇒ Object



191
192
193
194
195
# File 'lib/bin_utils/pure_ruby.rb', line 191

def get_int64_le(data, i=0)
  data = data.byteslice(i, 8)  if i > 0
  int0, int1 = data.unpack(INT32_INT32_LE)
  int0 + (int1 << 32)
end

#get_int8(data, i = 0) ⇒ Object



31
32
33
# File 'lib/bin_utils/pure_ruby.rb', line 31

def get_int8(data, i=0)
  data.getbyte(i)
end

#get_sint8(data, i = 0) ⇒ Object



209
210
211
212
# File 'lib/bin_utils/pure_ruby.rb', line 209

def get_sint8(data, i=0)
  i = get_int8(data, i)
  i - ((i & 128) << 1)
end

#slice_ber!(data) ⇒ Object



267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
# File 'lib/bin_utils/pure_ruby.rb', line 267

def slice_ber!(data)
  res = 0
  pos = 0
  while true
    if (byte = data.getbyte(pos)) <= 127
      res += byte
      break
    else
      res = (res + (byte - 128)) * 128
      pos += 1
    end
  end
  data[0, pos+1] = EMPTY
  res
end

#slice_int16_be!(data) ⇒ Object



55
56
57
58
59
# File 'lib/bin_utils/pure_ruby.rb', line 55

def slice_int16_be!(data)
  int = data.getbyte(1) + data.getbyte(0) * 256
  data[0, 2] = EMPTY
  int
end

#slice_int16_le!(data) ⇒ Object



45
46
47
48
49
# File 'lib/bin_utils/pure_ruby.rb', line 45

def slice_int16_le!(data)
  int = data.getbyte(0) + data.getbyte(1) * 256
  data[0, 2] = EMPTY
  int
end

#slice_int24_be!(data) ⇒ Object



75
76
77
78
79
# File 'lib/bin_utils/pure_ruby.rb', line 75

def slice_int24_be!(data)
  int = data.getbyte(2) + data.getbyte(1) * 256 + data.getbyte(0) * 65536
  data[0, 3] = EMPTY
  int
end

#slice_int24_le!(data) ⇒ Object



65
66
67
68
69
# File 'lib/bin_utils/pure_ruby.rb', line 65

def slice_int24_le!(data)
  int = data.getbyte(0) + data.getbyte(1) * 256 + data.getbyte(2) * 65536
  data[0, 3] = EMPTY
  int
end

#slice_int32_be!(data) ⇒ Object



98
99
100
101
102
103
# File 'lib/bin_utils/pure_ruby.rb', line 98

def slice_int32_be!(data)
  int = (data.getbyte(3) + data.getbyte(2) * 256 +
         data.getbyte(1) * 65536 + data.getbyte(0) * 16777216)
  data[0, 4] = EMPTY
  int
end

#slice_int32_le!(data) ⇒ Object



86
87
88
89
90
91
# File 'lib/bin_utils/pure_ruby.rb', line 86

def slice_int32_le!(data)
  int = (data.getbyte(0) + data.getbyte(1) * 256 +
         data.getbyte(2) * 65536 + data.getbyte(3) * 16777216)
  data[0, 4] = EMPTY
  int
end

#slice_int40_be!(data) ⇒ Object



125
126
127
128
129
130
131
# File 'lib/bin_utils/pure_ruby.rb', line 125

def slice_int40_be!(data)
  int = (data.getbyte(4) + data.getbyte(3) * 256 +
         data.getbyte(2) * 65536 + data.getbyte(1) * 16777216 +
         (data.getbyte(0) << 32))
  data[0, 5] = EMPTY
  int
end

#slice_int40_le!(data) ⇒ Object



111
112
113
114
115
116
117
# File 'lib/bin_utils/pure_ruby.rb', line 111

def slice_int40_le!(data)
  int = (data.getbyte(0) + data.getbyte(1) * 256 +
         data.getbyte(2) * 65536 + data.getbyte(3) * 16777216 +
         (data.getbyte(4) << 32))
  data[0, 5] = EMPTY
  int
end

#slice_int48_be!(data) ⇒ Object



147
148
149
150
151
# File 'lib/bin_utils/pure_ruby.rb', line 147

def slice_int48_be!(data)
  int1, int0 = data.unpack(INT16_INT32_BE)
  data[0, 6] = EMPTY
  int0 + (int1 << 32)
end

#slice_int48_le!(data) ⇒ Object



134
135
136
137
138
# File 'lib/bin_utils/pure_ruby.rb', line 134

def slice_int48_le!(data)
  int0, int1 = data.unpack(INT32_INT16_LE)
  data[0, 6] = EMPTY
  int0 + (int1 << 32)
end

#slice_int56_be!(data) ⇒ Object



173
174
175
176
177
# File 'lib/bin_utils/pure_ruby.rb', line 173

def slice_int56_be!(data)
  int2, int1, int0 = data.unpack(INT8_INT16_INT32_BE)
  data[0, 7] = EMPTY
  int0 + (int1 << 32) + (int2 << 48)
end

#slice_int56_le!(data) ⇒ Object



160
161
162
163
164
# File 'lib/bin_utils/pure_ruby.rb', line 160

def slice_int56_le!(data)
  int0, int1, int2 = data.unpack(INT32_INT16_INT8_LE)
  data[0, 7] = EMPTY
  int0 + (int1 << 32) + (int2 << 48)
end

#slice_int64_be!(data) ⇒ Object



197
198
199
200
201
# File 'lib/bin_utils/pure_ruby.rb', line 197

def slice_int64_be!(data)
  int1, int0 = data.unpack(INT32_INT32_BE)
  data[0, 8] = EMPTY
  int0 + (int1 << 32)
end

#slice_int64_le!(data) ⇒ Object



185
186
187
188
189
# File 'lib/bin_utils/pure_ruby.rb', line 185

def slice_int64_le!(data)
  int0, int1 = data.unpack(INT32_INT32_LE)
  data[0, 8] = EMPTY
  int0 + (int1 << 32)
end

#slice_int8!(data) ⇒ Object



35
36
37
38
39
# File 'lib/bin_utils/pure_ruby.rb', line 35

def slice_int8!(data)
  int = data.getbyte(0)
  data[0, 1] = EMPTY
  int
end

#slice_sint8!(data) ⇒ Object



214
215
216
217
# File 'lib/bin_utils/pure_ruby.rb', line 214

def slice_sint8!(data)
  i = slice_int8!(data)
  i - ((i & 128) << 1)
end