Anuncio

Colapsar
No hay anuncio todavía.

Pregunta sobre el checksum CRC16

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Pregunta sobre el checksum CRC16

    Hola chicos!!
    este es mi primer post y ya empiezo con una pregunta quizá un poco boba ....
    existe alguna función para calcular el checksum CRC16

    Gracias a todos!

  • #2
    Acá te paso este código, espero que te sirva!!

    Código:
    function zsy_crc16.
    *"----------------------------------------------------------------------
    *"*"Interfase local
    *" IMPORTING
    *" REFERENCE(I_BLOCK) TYPE CHAR256
    *" REFERENCE(I_DETAIL) TYPE CHAR1 OPTIONAL
    *" EXPORTING
    *" REFERENCE(E_KEY) TYPE STRING
    *"----------------------------------------------------------------------
    * Original code in Clipper:
    
    * STATIC FUNCTION syscrc(bloc)
    * LOCAL lsb,msb,n,x,vint
    * STORE CHR(255) TO lsb,msb
    * FOR n := 1 TO 256
    * x := CHARXOR(SUBSTR(bloc,n,1),msb)
    * x := CHARXOR(x,CHR(INT(ASC(x) / 16)))
    * vint := CHARXOR(lsb,CHR(INT(ASC(x) / 8)))
    * msb := CHARXOR(vint,CHR((ASC(x) * 16) % 256))
    * lsb := CHARXOR(x,CHR((ASC(x) * 32) % 256))
    * NEXT
    * lsb := CHARXOR(lsb,CHR(255))
    * msb := CHARXOR(msb,CHR(255))
    * RETURN NTOC(ASC(msb),16,2,"0") + NTOC(ASC(lsb),16,2,"0")
    
    lsb = c_chr255.
    msb = c_chr255.
    
    do 256 times.
    pos = sy-index - 1.
    w_ascii = i_block+pos(1).
    call function 'URL_ASCII_CODE_GET'
    exporting
    trans_char = w_ascii
    importing
    char_code = w_char.
    w_hex = w_char.
    
    x = w_hex bit-xor msb.
    x_dec = x.
    
    w_dec = trunc( x_dec / 16 ).
    w_hex = w_dec.
    y = x bit-xor w_hex.
    y_dec = y.
    
    w_dec = trunc( y_dec / 8 ).
    w_hex = w_dec.
    vint = lsb bit-xor w_hex.
    vint_dec = vint.
    
    w_dec = ( y_dec * 16 ) mod 256.
    w_hex = w_dec.
    msb = vint bit-xor w_hex.
    msb_dec = msb.
    
    w_dec = ( y_dec * 32 ) mod 256.
    w_hex = w_dec.
    lsb = y bit-xor w_hex.
    lsb_dec = lsb.
    
    if not i_detail is initial.
    write:/ sy-index,x_dec,y_dec,vint_dec,msb_dec,lsb_dec.
    endif.
    enddo.
    
    lsb = lsb bit-xor c_chr255.
    
    msb = msb bit-xor c_chr255.
    
    lsb_char = lsb.
    msb_char = msb.
    
    concatenate msb_char lsb_char into e_key.
    endfunction.

    Comentario


    • #3
      muchas gracias por la pronta respuesta!
      ya lo estoy probando

      Comentario


      • #4
        Please share someone whole code i have same requirement

        Comentario

        Trabajando...
        X