Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Binary to decimal

Former Member
0 Likes
1,405

I would want to convert the binary values to those corresponding decimal equivalents,could any one help for doing the same.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,048

Hi Nilesh,

You can use this code to do that,

REPORT ZC1BIN_TO_DECI MESSAGE-ID zc1conmsg.

PARAMETERS: bin TYPE i.

DATA: flag TYPE i,

deci TYPE i,

rev_bin TYPE string.

START-OF-SELECTION.

IF bin IS INITIAL.

MESSAGE i000.

EXIT.

ENDIF.

PERFORM validate_data USING bin CHANGING flag.

IF flag = 1.

MESSAGE i001.

EXIT.

ENDIF.

WRITE:/ 'Binary :',bin.

PERFORM string_reverse USING bin CHANGING rev_bin.

PERFORM binary_to_decimal USING rev_bin CHANGING deci.

WRITE:/ 'Decimal:',deci.

&----


*& Form validate_data

&----


  • This subroutine whether entered data is binary or not.

----


  • -->P_BIN text

  • <--P_FLAG text

----


FORM validate_data USING p_bin

CHANGING p_flag.

DATA: val TYPE string,

tem TYPE c,

l TYPE i.

val = p_bin.

l = strlen( val ).

DO l TIMES.

tem = val.

IF tem <> 1 .

IF tem <> 0.

p_flag = 1.

EXIT.

ENDIF.

ENDIF.

SHIFT val.

ENDDO.

ENDFORM. " validate

&----


*& Form string_reverse

&----


  • This subroutine reverses a given string.

----


  • -->P_BIN text

  • <--P_REV_BIN text

----


FORM string_reverse USING p_bin

CHANGING p_rev_bin.

DATA : t_bin TYPE string,

temp1 TYPE c,

l TYPE i.

t_bin = p_bin.

l = strlen( t_bin ).

DO l TIMES.

temp1 = t_bin.

CONCATENATE temp1 p_rev_bin INTO p_rev_bin.

SHIFT t_bin.

ENDDO.

ENDFORM. " string_reverse

&----


*& Form binary_to_decimal

&----


  • This Subroutine converts a binary number into decimal equivalent

----


  • -->P_REV_BIN text

  • <--P_DECI text

----


FORM binary_to_decimal USING p_rev_bin

CHANGING p_deci.

DATA : dig TYPE c,

dig1 type i,

t_bin TYPE string,

l TYPE i,

t_deci type i,

c TYPE i.

t_bin = p_rev_bin .

l = strlen( t_bin ).

c = 0.

DO l TIMES.

dig = p_rev_bin.

dig1 = dig.

t_deci = 2 ** c .

p_deci = p_deci + t_deci * dig1.

SHIFT p_rev_bin.

c = c + 1.

ENDDO.

ENDFORM.

6 REPLIES 6
Read only

Former Member
0 Likes
1,048

Refer

Read only

Former Member
0 Likes
1,049

Hi Nilesh,

You can use this code to do that,

REPORT ZC1BIN_TO_DECI MESSAGE-ID zc1conmsg.

PARAMETERS: bin TYPE i.

DATA: flag TYPE i,

deci TYPE i,

rev_bin TYPE string.

START-OF-SELECTION.

IF bin IS INITIAL.

MESSAGE i000.

EXIT.

ENDIF.

PERFORM validate_data USING bin CHANGING flag.

IF flag = 1.

MESSAGE i001.

EXIT.

ENDIF.

WRITE:/ 'Binary :',bin.

PERFORM string_reverse USING bin CHANGING rev_bin.

PERFORM binary_to_decimal USING rev_bin CHANGING deci.

WRITE:/ 'Decimal:',deci.

&----


*& Form validate_data

&----


  • This subroutine whether entered data is binary or not.

----


  • -->P_BIN text

  • <--P_FLAG text

----


FORM validate_data USING p_bin

CHANGING p_flag.

DATA: val TYPE string,

tem TYPE c,

l TYPE i.

val = p_bin.

l = strlen( val ).

DO l TIMES.

tem = val.

IF tem <> 1 .

IF tem <> 0.

p_flag = 1.

EXIT.

ENDIF.

ENDIF.

SHIFT val.

ENDDO.

ENDFORM. " validate

&----


*& Form string_reverse

&----


  • This subroutine reverses a given string.

----


  • -->P_BIN text

  • <--P_REV_BIN text

----


FORM string_reverse USING p_bin

CHANGING p_rev_bin.

DATA : t_bin TYPE string,

temp1 TYPE c,

l TYPE i.

t_bin = p_bin.

l = strlen( t_bin ).

DO l TIMES.

temp1 = t_bin.

CONCATENATE temp1 p_rev_bin INTO p_rev_bin.

SHIFT t_bin.

ENDDO.

ENDFORM. " string_reverse

&----


*& Form binary_to_decimal

&----


  • This Subroutine converts a binary number into decimal equivalent

----


  • -->P_REV_BIN text

  • <--P_DECI text

----


FORM binary_to_decimal USING p_rev_bin

CHANGING p_deci.

DATA : dig TYPE c,

dig1 type i,

t_bin TYPE string,

l TYPE i,

t_deci type i,

c TYPE i.

t_bin = p_rev_bin .

l = strlen( t_bin ).

c = 0.

DO l TIMES.

dig = p_rev_bin.

dig1 = dig.

t_deci = 2 ** c .

p_deci = p_deci + t_deci * dig1.

SHIFT p_rev_bin.

c = c + 1.

ENDDO.

ENDFORM.

Read only

0 Likes
1,048

Hi

Try likethis

1. submit report exporting list to memory.

2. to get the output from memory

call function 'LIST_FROM_MEMORY'

tables

listobject = int_listobject

exceptions

not_found = 1.

3. to convert the list in binary format to text (ASCI)

call function 'LIST_TO_ASCI'

tables

listasci = int_listascii

listobject = int_listobject

exceptions

others = 1.

there is no need to use

SCMS_BINARY_TO_TEXT

Reward all helpfull answers

Regards

Pavan

Read only

0 Likes
1,048

Hi Manikandan,

I would also want to reverse string is it possible with the program?

Read only

0 Likes
1,048

hi,

Use STRING_REVERSE FM to reverse the string


 CALL FUNCTION 'STRING_REVERSE'
EXPORTING
string = descr
lang = 'E'
IMPORTING
rstring = descr.

Read only

0 Likes
1,048

You can use this subroutine for reversing string,

&----


*& Form string_reverse

&----


  • This subroutine reverses a given string.

----


  • -->P_BIN text

  • <--P_REV_BIN text

----


FORM string_reverse USING p_bin

CHANGING p_rev_bin.

DATA : t_bin TYPE string,

temp1 TYPE c,

l TYPE i.

t_bin = p_bin.

l = strlen( t_bin ).

DO l TIMES.

temp1 = t_bin.

CONCATENATE temp1 p_rev_bin INTO p_rev_bin.

SHIFT t_bin.

ENDDO.

ENDFORM. " string_reverse

Regards,

Manikandan