JavaScript友好的二进制安全数据格式设计(不是JSON或XML)

首先:在这种特定情况下,JSON和XML不是一个选项,请不要提出建议。如果这更容易接受这一事实,想象一下我打算重新发明轮子进行自我教育。 回到这一点: 我需要设计一个二进制安全数据格式来编码我发送给我写的特定哑服务器的一些数据报(如果重要的话,在C中)。 为了简化问题,我们假设我只发送数字,字符串和数组。 重要的事实:服务器不(也不应该)知道有关Unicode和东西的任何信息。它将所有字符串视为二进制blob(并且从不查看它们)。 我最初设计的格式如下: 数据报:
<Number:size>n<Value1>...<ValueN>
值: 编号:
Nn<Value>n
字符串:
Sn<Number:size-in-bytes>n<bytes>n
数组:
An<Number:size>n<Value0>...<ValueN>
例:
[ 1, "foo", [] ]
序列化如下: 1;数据报中的项目数 一个 ; - 阵列 - 3;数组中的项目数 N; - 号码 - 1;数值 S; - 字符串 - 3;字符串大小 foo;字符串字节 一个 ; - 阵列 - 0;数组中的项目数 问题是我无法在JavaScript中可靠地获取字节数字符串大小。 所以,问题是:如何更改格式,因此字符串既可以保存在JS中,也可以整齐地加载到C中。 我不想为服务器添加Unicode支持。 而且我不太想解码服务器上的字符串(例如,从base64或简单地转换为unescape xNN序列) - 这需要使用动态字符串缓冲区,考虑到服务器是多么愚蠢,这是不太理想的... 有线索吗?     
已邀请:
似乎在普通C中读取UTF-8并不是那么可怕。所以我正在扩展协议以原生处理UTF-8字符串。 (但是会对这个问题的答案表示赞赏。)     

要回复问题请先登录注册