Difference between revisions of "Zerocode"
Jump to navigation
Jump to search
(added zero_decode_ID(inputbuf)) |
|||
Line 1: | Line 1: | ||
zero encoding and decoding functions and a couple of | zero encoding and decoding functions and a couple of useful functions from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/510399 | ||
<python># From http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/510399 | <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 82: | Line 84: | ||
newstring = newstring + c | newstring = newstring + c | ||
in_zero = True | in_zero = True | ||
return newstring | return newstring | ||
def zero_decode_ID(inputbuf): | |||
newstring ="" | |||
in_zero = False | |||
#print "in encode, input is", ByteToHex(inputbuf) | |||
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[:4] | |||
</python> | </python> | ||
[[Category: AW Groupies]] | [[Category: AW Groupies]] |
Revision as of 23:29, 18 December 2007
zero encoding and decoding functions and a couple of useful functions from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/510399
<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
def zero_decode_ID(inputbuf):
newstring ="" in_zero = False #print "in encode, input is", ByteToHex(inputbuf) 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[:4]
</python>