need help with converting c function to python function
Anton Vredegoor
anton.vredegoor at gmail.com
Thu Jul 5 15:39:07 EDT 2007
In article <1183656728.610086.178080 at k79g2000hse.googlegroups.com>,
nephish at gmail.com 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.
More information about the Python-list
mailing list