本文共 1924 字,大约阅读时间需要 6 分钟。
一个TLV对象示例如下:
多个TLV对象可以连接起来,组成一个大的buffer:
一个TLV对象内部也可以嵌套另一个TLV对象:
我希望能提供一套API接口(C/C++/Java/其他语言),可以方便地完成TLV格式的编码和解码,项目地址如下所示:
其中,C++版本已经实现(更新:C/Java/Android版本也均已实现),介绍如下:
1. TLV编码的接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //put one TLV box bool PutBoolValue( int type, bool value); bool PutCharValue( int type, char value); bool PutShortValue( int type, short value); bool PutIntValue( int type, int value); bool PutLongValue( int type, long value); bool PutLongLongValue( int type, long long value); bool PutFloatValue( int type, float value); bool PutDoubleValue( int type, double value); bool PutStringValue( int type, char *value); bool PutStringValue( int type, const std::string &value); bool PutBytesValue( int type,unsigned char *value, int length); bool PutObjectValue( int type, const TlvBox& value); //do encode bool Serialize(); //access encoded buffer and length unsigned char * GetSerializedBuffer() const ; int GetSerializedBytes() const ; |
2. TLV解码的接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //do decode bool Parse( const unsigned char *buffer, int buffersize); //get one TLV box bool GetBoolValue( int type, bool &value) const ; bool GetCharValue( int type, char &value) const ; bool GetShortValue( int type, short &value) const ; bool GetIntValue( int type, int &value) const ; bool GetLongValue( int type, long &value) const ; bool GetLongLongValue( int type, long long &value) const ; bool GetFloatValue( int type, float &value) const ; bool GetDoubleValue( int type, double &value) const ; bool GetStringValue( int type, char *value, int &length) const ; bool GetStringValue( int type,std::string &value) const ; bool GetBytesValue( int type,unsigned char *value, int &length) const ; bool GetBytesValuePtr( int type,unsigned char **value, int &length) const ; bool GetObjectValue( int type,TlvBox& value) const ; |