def read_data(data): ba = ByteArray(data) #大端模式标准对齐方式 ba.endian = "!" length = ba.readInt() print "length", length print "bytesAvailable", ba.bytesAvailable() #只用了1位字节存储 长度-128 - 127 #业务大类 actionName = ba.readByte() #具体业务类型 type = ba.readByte() print "actionName", actionName print "type", type str = ba.readUTFBytes(3) print str i = ba.readInt() print i
def writeData(self, id, data): length = len(data) #print id, length, data ba = ByteArray() ba.endian = '!' ba.writeInt(id) ba.writeInt(length) ba.writeUTFBytes(data) return ba.data
def write_data(id, data): #获取协议号 + 内容 以后的长度 length = get_bytes_len(id) + get_bytes_len(data) print id, length, data ba = ByteArray() ba.endian = "!" ba.writeInt(length) ba.writeInt(id) #print type(data) #根据data类型 写入ba write_data_in_bytes(ba, data) return ba.data
def write_multi_data(id, params): length = get_bytes_len(id) for i in range(0, len(params)): length += get_bytes_len(params[i]) ba = ByteArray() #大端模式标准对齐方式 ba.endian = "!" ba.writeInt(length) ba.writeInt(id) #根据data类型 写入ba for i in range(0, len(params)): data = params[i] write_data_in_bytes(ba, data) return ba.data
def decode(self, data): ba = ByteArray(data) ba.endian = "!" #判断长度 #print 'self.tempDataBuffer', self.tempDataBuffer if self.tempDataBuffer == "": self.id = ba.readInt() print self.id length = ba.readInt() s = ba.readUTFBytes(ba.bytesAvailable()) print 'length', length, len(s) #判断长度 if len(s) < length: self.tempDataBuffer = s else: print "content", s return {"id": self.id, "content": s} else: s = self.tempDataBuffer + ba.readUTFBytes(ba.bytesAvailable()) print 'hebing', s return {"id": self.id, "content": s}
def decode(self, data): ba = ByteArray(data) ba.endian = "!" #判断长度 #print 'self.tempDataBuffer', self.tempDataBuffer if self.tempDataBuffer == "": self.id = ba.readInt() print self.id length = ba.readInt() s = ba.readUTFBytes(ba.bytesAvailable()) print 'length', length, len(s) #判断长度 if len(s) < length: self.tempDataBuffer = s else: print "content", s return {"id":self.id, "content":s} else: s = self.tempDataBuffer + ba.readUTFBytes(ba.bytesAvailable()) print 'hebing', s return {"id":self.id, "content":s}
def get_bytes_len(data): b = ByteArray() b.endian = "!" write_data_in_bytes(b, data) return len(b.data)