def writeU8(os, u8): os.write(bytes((u8&0xff,))) def writeU16(os, u16): os.write(bytes(((u16>>8)&0xff,))) os.write(bytes((u16&0xff,))) def writeU32(os, u32): os.write(bytes(((u32>>24)&0xff,))) os.write(bytes(((u32>>16)&0xff,))) os.write(bytes(((u32>>8)&0xff,))) os.write(bytes((u32&0xff,))) def writeString(os, s): b = bytes(s, "utf-8") writeU16(os, len(b)) os.write(b) def writeLongString(os, s): b = bytes(s, "utf-8") writeU32(os, len(b)) os.write(b) def bytesToInt(b): s = 0 for x in b: s = (s<<8)+x return s