mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
Performance Improvement in BITBYTE_TO_INT Conversion
- Changed: Reduced calculations and processing required to convert a bit string into an integer value to a minimum.
This commit is contained in:
parent
bc432de28d
commit
3294474243
|
@ -50,19 +50,34 @@ CLASS ZCL_ABAPGIT_CONVERT IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD bitbyte_to_int.
|
METHOD bitbyte_to_int.
|
||||||
|
|
||||||
DATA: lv_bits TYPE string.
|
DATA: bitbyte TYPE string,
|
||||||
|
len TYPE i,
|
||||||
|
offset TYPE i.
|
||||||
|
|
||||||
|
bitbyte = iv_bits.
|
||||||
lv_bits = iv_bits.
|
SHIFT bitbyte LEFT DELETING LEADING '0 '.
|
||||||
|
len = strlen( bitbyte ).
|
||||||
|
offset = len - 1.
|
||||||
|
|
||||||
rv_int = 0.
|
rv_int = 0.
|
||||||
WHILE strlen( lv_bits ) > 0.
|
DO len TIMES.
|
||||||
rv_int = rv_int * 2.
|
|
||||||
IF lv_bits(1) = '1'.
|
IF sy-index = 1.
|
||||||
rv_int = rv_int + 1.
|
|
||||||
|
"Intialize
|
||||||
|
CASE bitbyte+offset(1).
|
||||||
|
WHEN '1'. rv_int = 1.
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
ELSE.
|
||||||
|
CASE bitbyte+offset(1).
|
||||||
|
WHEN '1'. rv_int = rv_int + ( 2 ** ( sy-index - 1 ) ).
|
||||||
|
ENDCASE.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
lv_bits = lv_bits+1.
|
|
||||||
ENDWHILE.
|
offset = offset - 1. "Move Cursor
|
||||||
|
|
||||||
|
ENDDO.
|
||||||
|
|
||||||
ENDMETHOD. "bitbyte_to_int
|
ENDMETHOD. "bitbyte_to_int
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user