Difference between revisions of "Zerocode"
Jump to navigation
Jump to search
m |
Chaser Zaks (talk | contribs) (Page repair: <python></python> replaced with <syntaxhighlight lang="python"></syntaxhighlight>) |
||
(2 intermediate revisions by 2 users not shown) | |||
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 | ||
< | |||
<syntaxhighlight lang="python"># From http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/510399 | |||
# 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 84: | Line 85: | ||
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] | |||
</ | |||
</syntaxhighlight> | |||
[[Category: AW Groupies]] | [[Category: AW Groupies]] |
Revision as of 04:40, 19 April 2016
zero encoding and decoding functions and a couple of useful functions from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/510399
# From http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/510399
# 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]