Difference between revisions of "Zerocode"
Jump to navigation
Jump to search
(creating page) |
m |
||
Line 86: | Line 86: | ||
</pre> | </pre> | ||
[[Category: AW Groupies]] |
Revision as of 16:46, 14 December 2007
zero encoding and decoding functions and a couple of other useful functions
# From http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/510399 def ByteToHex( byteStr ): """ Convert a byte string to it's hex string representation e.g. for output. """ # Uses list comprehension which is a fractionally faster implementation than # the alternative, more readable, implementation below # # hex = [] # for aChar in byteStr: # hex.append( "%02X " % ord( aChar ) ) # # return ''.join( hex ).strip() return ''.join( [ "%02X " % ord( x ) for x in byteStr ] ).strip() def HexToByte( hexStr ): """ Convert a string hex byte values into a byte string. The Hex Byte values may or may not be space separated. """ # The list comprehension implementation is fractionally slower in this case # # hexStr = ''.join( hexStr.split(" ") ) # return ''.join( ["%c" % chr( int ( hexStr[i:i+2],16 ) ) \ # for i in range(0, len( hexStr ), 2) ] ) bytes = [] hexStr = ''.join( hexStr.split(" ") ) for i in range(0, len(hexStr), 2): bytes.append( chr( int (hexStr[i:i+2], 16 ) ) ) return ''.join( bytes ) def zero_encode(inputbuf): newstring ="" zero = False zero_count = 0 for c in inputbuf: if c != '\0': if zero_count != 0: newstring = newstring + chr(zero_count) zero_count = 0 zero = False newstring = newstring + c else: if zero == False: newstring = newstring + c zero = True zero_count = zero_count + 1 if zero_count != 0: newstring = newstring + chr(zero_count) return newstring def zero_decode(inputbuf): newstring ="" in_zero = False for c in inputbuf: if c != '\0': if in_zero == True: zero_count = ord(c) zero_count = zero_count -1 while zero_count>0: newstring = newstring + '\0' zero_count = zero_count -1 in_zero = False else: newstring = newstring + c else: newstring = newstring + c in_zero = True return newstring