Base64字符串差异

时间:2012-06-22 11:10:55

标签: c++ base64

我正在从服务器向客户端发送带有某些对象的解码坐标的base64字符串。有大约20个具有x; y对的对象,每个整数2个字节。这些坐标会随着时间的推移而变化,但有些会为大约2-3次发送呼叫保存相同的值。

任何计算差异的方法并且每次都发送它而不是完整的base64?网络流量在这里非常重要。

以下是使用100ms暂停的2个字符串的示例:

AFg7IP+SAAJg/ana/zAA52BJO/D/9wAxIFkAIABIABQBSADtAFEAMGlLctX/
AFo7IP+SAAJgAKnb/0EA6GBJO/D//wA0IFkAIABIABQBSADtAEoAYmlLctX/

1 个答案:

答案 0 :(得分:1)

首先,以字节为单位有效地打包数据,然后根据需要进行编码。正如@twall所说,你应该努力消除基数64,因为它至少将数据的大小扩大了33%。如果恰好有20 x,y对,这是打包它的一种方法:

字节1-3:bitset。每个位代表一对x,y对。如果设置,则此消息中该对的更新值。未使用的第3个字节的最后4位。

字节5& 6 x第一点的坐标 字节7& 8 y第一点的坐标

......多达19点

最多83个字节,3个字节的最小值(没有更新的coords)