In article <[EMAIL PROTECTED]>, 
[EMAIL PROTECTED] says...

> i have a c function from some modbus documentation that i need to
> translate into python.
> 
> it looks like this:
> 
> 
> unsigned short CRC16(puchMsg, usDataLen)
> unsigned char *puchMsg ;
> unsigned short usDataLen ;
> {
>    unsigned char uchCRCHi = 0xFF ;
>    unsigned char uchCRCLo = 0xFF ;
>    unsigned uIndex ;
>    while (usDataLen--)
>        {
>        uIndex = uchCRCHi ^ *puchMsgg++ ;
>        uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;
>        uchCRCLo = auchCRCLo[uIndex] ;
>        }
>    return (uchCRCHi << 8 | uchCRCLo) ;
> }
> 
> some of it i can make out, but i can't seem to figgure out
> this part ' auchCRCHi[uIndex};
> it looks like a typo, because there is a closing } that does not match
> the opening [.
> 
> 
> here is what i have so far, but is not giving me the right values
> 
>  def crc16(data):
>      crc_hi = 0xff
>      crc_lo = 0xff
>      for x in data:
>          crc_index = crc_hi ^ x
>          crc_hi = crc_lo ^ (crc_hi | crc_index)
>          crc_lo = crc_lo | crc_index
>      return (crc_hi << 8 | crc_lo)
> 
> whaddya think?

Use lateral thinking. CRC usually means some standard data checking 
algorithm. If you google for crc16 you will find various python 
implementations. Off hand I would first try this one because he seems to 
have been thinking about it:

http://mail.python.org/pipermail/python-list/2005-September/342097.html

But I don't really know what it is you are looking for, cyclic 
redundancy check?

http://en.wikipedia.org/wiki/Cyclic_redundancy_check

A.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to