Difference between revisions of "Zerocode"
Jump to navigation
Jump to search
m |
|||
Line 1: | Line 1: | ||
zero encoding and decoding functions and a couple of other useful functions | zero encoding and decoding functions and a couple of other useful functions | ||
< | <python># From http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/510399 | ||
# From http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/510399 | |||
def ByteToHex( byteStr ): | def ByteToHex( byteStr ): | ||
""" | """ | ||
Line 83: | Line 82: | ||
newstring = newstring + c | newstring = newstring + c | ||
in_zero = True | in_zero = True | ||
return newstring | return newstring | ||
</python> | |||
</ | |||
[[Category: AW Groupies]] | [[Category: AW Groupies]] |
Revision as of 09:49, 15 December 2007
zero encoding and decoding functions and a couple of other useful functions <python># 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
</python>