value = 0
if size > 0:
- byte = ord(stream.read(1))
- if (byte & 0b10000000) == 0b10000000:
- value = -1 << 8
- value |= byte
+ first_byte = ord(stream.read(1))
+ value = first_byte
for i in xrange(1, size):
byte = ord(stream.read(1))
- value = (value << 1) | byte
+ value = (value << 8) | byte
+ if (first_byte & 0b10000000) == 0b10000000:
+ value = -(2**(size*8) - value)
return value
value = ''
if size > 0:
value = stream.read(size)
+ value = value.partition(chr(0))[0]
return value
value = u''
if size > 0:
data = stream.read(size)
+ data = data.partition(chr(0))[0]
value = unicode(data, 'utf_8')
return value
if sint >= 0:
uint = sint
else:
- uint = 0b10000000 << (length - 1)
- uint += sint
- uint |= 0b10000000 << (length - 1)
+ uint = 2**(length*8) - abs(sint)
data = bytearray(length)
for index in reversed(xrange(length)):